TP 4 - Découverte et Mise en Œuvre des Protocoles SSL/TLS
Objectifs
- Comprendre le rôle et le fonctionnement de SSL/TLS dans la sécurisation des communications sur Internet.
- Manipuler des certificats numériques : création, inspection et validation.
- Configurer un serveur web (Apache ou Nginx) pour activer le protocole HTTPS.
- Analyser les échanges TLS à l’aide d’outils en ligne de commande et de capture réseau.
- Étudier les cipher suites et comprendre leur rôle dans la sécurisation de la connexion.
Pré-requis
- Connaissances de base en réseaux et protocoles TCP/IP.
- Notions élémentaires de cryptographie (chiffrement symétrique/asymétrique, hachage).
- Expérience avec un système Linux (ou un environnement virtualisé sous Linux).
- Connaissance des outils en ligne de commande comme OpenSSL et un éditeur de texte.
Matériel et Logiciels Nécessaires
- Un poste avec un système d’exploitation Linux (ou une VM Linux).
- Installation d’OpenSSL.
- Serveur web (Apache ou Nginx) installé localement.
- (Optionnel) Wireshark pour la capture et l’analyse des paquets.
- Un navigateur web pour tester l’accès HTTPS.
Déroulement du TP
Partie 1 : Analyse et Création de Certificats SSL/TLS
Analyse d’un certificat existant
Objectif : Comprendre la structure d’un certificat SSL/TLS.
Exercice :
Récupérez un certificat public (par exemple, celui d’un site web connu ou d’un serveur de test).
Utilisez la commande suivante pour l’afficher en texte lisible :
openssl x509 -in certificat.pem -text -noout
Identifiez les informations clés : émetteur, sujet, dates de validité, algorithme de signature, etc.
Création d’un certificat auto-signé
Objectif : Apprendre à générer une clé privée et à créer un certificat auto-signé.
Exercice :
Générer une clé privée RSA :
openssl genrsa -out server.key 2048
Créer une demande de signature de certificat (CSR) :
openssl req -new -key server.key -out server.csr
Remplissez les informations demandées (CN, organisation, etc.).
Créer le certificat auto-signé valable 365 jours :
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Analysez le certificat généré avec la commande utilisée en 1.1.
Partie 2 : Configuration d’un Serveur Web avec HTTPS
Configuration d’Apache (ou Nginx)
Objectif : Configurer un serveur web pour utiliser le certificat créé.
Exercice (pour Apache) :
Copiez server.crt et server.key dans le dossier /etc/apache2/ssl/ (ou un dossier de votre choix).
Modifiez le fichier de configuration du site (par exemple, /etc/apache2/sites-available/default-ssl.conf) pour pointer vers ces fichiers :
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Activez le module SSL et le site SSL :
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
Exercice (pour Nginx) :
Copiez vos fichiers dans le répertoire approprié.
Modifiez la configuration du serveur (dans un fichier sous /etc/nginx/sites-available/) pour inclure :
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# Autres directives...
}
Redémarrez Nginx :
sudo systemctl restart nginx
Test de la connexion HTTPS
Objectif : Vérifier que le serveur est accessible via HTTPS.
Exercice :
Ouvrez votre navigateur et accédez à https://localhost.
Ignorez les avertissements liés au certificat auto-signé.
Utilisez la commande suivante pour tester la connexion en ligne de commande :
openssl s_client -connect localhost:443
Analysez la sortie pour vérifier l’établissement d’une connexion sécurisée et la cipher suite utilisée.
Analyse des Cipher Suites et Sécurisation
Exploration des Cipher Suites
Objectif : Identifier et comprendre les différents éléments composant une cipher suite.
Exercice :
À partir de la commande openssl s_client utilisée en 2.2, identifiez la cipher suite négociée.
Recherchez sur Internet ou dans la documentation OpenSSL la signification des différents éléments de la cipher suite (algorithme de chiffrement, méthode d’échange de clé, hachage).
Notez les avantages et inconvénients de la cipher suite utilisée.
Sécurisation du Serveur : Choix des Cipher Suites
Objectif : Comprendre l’impact du choix des cipher suites sur la sécurité du serveur.
Exercice :
Modifiez la configuration de votre serveur web pour forcer l’utilisation d’un ensemble restreint de cipher suites modernes et sécurisées.
Pour Apache, cela peut ressembler à :
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES SSLHonorCipherOrder on
Pour Nginx, vous pouvez utiliser :
ssl_ciphers 'HIGH:!aNULL:!MD5:!3DES'; ssl_prefer_server_ciphers on;
Redémarrez le serveur et utilisez à nouveau openssl s_client pour vérifier que seules les cipher suites autorisées sont négociées.
Livrables
Rapport écrit détaillant :
La démarche suivie pour la création et l’analyse des certificats.
La procédure de configuration du serveur web.
Les résultats de vos tests (captures d’écran, extraits de commandes).
Une analyse critique des cipher suites utilisées et des recommandations pour améliorer la sécurité.
Scripts et fichiers de configuration utilisés durant le TP.
(Optionnel) Une capture de session Wireshark illustrant l’établissement d’une connexion TLS.
Consignes et Évaluation
Respectez la syntaxe et les consignes de configuration.
Expliquez clairement chaque étape dans votre rapport.
La notation portera à la fois sur la compréhension théorique et la qualité de la mise en pratique.