HTTPS et TLS

Ce document explique les principes fondamentaux du protocole HTTPS et du protocole TLS, ainsi que les étapes pratiques pour sécuriser un site web sous Apache avec un certificat TLS. Il s’adresse aux étudiants et professionnels souhaitant comprendre la sécurisation des échanges web et la mise en place d’un serveur sécurisé.

D'après le document HTTPS et TLS

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

HTTPS et TLS

Document source

HTTPS et TLS

Web Security and Cryptographic Protocols · DOCX · 7 pages · 2048

Consulter le document original →

Ce document explique les principes fondamentaux du protocole HTTPS et du protocole TLS, ainsi que les étapes pratiques pour sécuriser un site web sous Apache avec un certificat TLS. Il s’adresse aux étudiants et professionnels souhaitant comprendre la sécurisation des échanges web et la mise en place d’un serveur sécurisé.

Introduction à HTTPS et TLS

Le protocole HTTPS (Hypertext Transport Protocol Secure) garantit l’intégrité et la confidentialité des données échangées entre un internaute et un site web. Par exemple, lorsqu’un utilisateur remplit un formulaire ou effectue un achat en ligne, HTTPS protège ses informations personnelles et assure qu’il communique bien avec le propriétaire légitime du site.

HTTPS repose sur le protocole Transport Layer Security (TLS), qui offre trois niveaux essentiels de protection :

  • Chiffrement : les données échangées sont codées pour empêcher toute interception illégale. Ainsi, personne ne peut écouter les conversations, suivre les activités ou voler les informations de l’utilisateur.
  • Intégrité des données : les informations ne peuvent être modifiées ou corrompues durant leur transfert sans que cela soit détecté.
  • Authentification : elle garantit que l’internaute communique avec le bon site web, protégeant contre les attaques de type “Man In The Middle” (MITM) et instaurant un climat de confiance.

Fonctionnement de l’authentification TLS

Dans la majorité des cas, seul le serveur est authentifié auprès de l’utilisateur grâce à un certificat numérique X.509 délivré par une autorité de certification (AC). Cependant, il est possible d’utiliser une authentification mutuelle, où le client présente également un certificat, stocké soit en logiciel, soit sur un support matériel (carte à puce, token USB), renforçant ainsi la sécurité du lien TLS.

Cette authentification forte mutuelle est de plus en plus utilisée dans les applications web sensibles.

Obtention et configuration d’un certificat TLS

Étape 1 : création de la clé privée et du Certificate Signing Request (CSR)

Le certificat sera placé dans le répertoire /etc/ssl.

cd /etc/ssl

On génère une clé privée RSA de 2048 bits, encodée en SHA256 :

openssl genrsa -out /etc/ssl/skyminds.net.key 2048 -sha256

Pour renforcer la sécurité, on restreint les droits d’accès à cette clé :

chmod 400 skyminds.net.key

Ensuite, on crée la demande de signature de certificat (CSR) à partir de la clé privée :

openssl req -new -key /etc/ssl/skyminds.net.key -out /etc/ssl/skyminds.net.csr

Le fichier CSR contient la demande à envoyer à une autorité de certification pour obtenir un certificat signé. Il est également possible de s’auto-signer un certificat pour un usage interne.

Étape 2 : signature du certificat par l’autorité de certification (CA)

Plusieurs options sont possibles :

  • Pour un usage limité, on peut créer sa propre autorité de certification avec OpenSSL ou utiliser Cacert. L’inconvénient est que le navigateur affichera une erreur de sécurité que l’utilisateur devra ignorer.
  • Pour un seul sous-domaine, des certificats SSL gratuits comme ceux de StartSSL sont reconnus par tous les navigateurs.
  • Pour plusieurs sous-domaines, un certificat wildcard payant (exemple : *.example.com) est recommandé.

Pour signer le certificat, il suffit d’afficher le contenu du CSR :

cat /etc/ssl/skyminds.net.csr

et de le copier-coller dans l’interface de la CA. Le certificat signé au format .crt doit ensuite être placé dans /etc/ssl.

Par exemple, pour StartSSL, il faut télécharger deux fichiers supplémentaires :

wget https://www.startssl.com/certs/sub.class1.server.ca.pem
wget https://www.startssl.com/certs/ca.pem

Ces fichiers doivent aussi être placés dans /etc/ssl.

Étape 3 : configuration d’Apache avec mod_ssl

On active le module SSL d’Apache :

a2enmod ssl

On édite ensuite la configuration du site :

nano /etc/apache2/sites-available/www.skyminds.net

On ajoute les directives suivantes en début de fichier pour activer TLS :

<IfModule mod_ssl.c>
  <VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName www.skyminds.net
    ServerAlias skyminds.net
    DocumentRoot /home/skyminds/public_html/

    SSLEngine on

    SSLCertificateFile /etc/ssl/skyminds.net.crt
    SSLCertificateKeyFile /etc/ssl/skyminds.net.key

    SSLCACertificateFile /etc/ssl/skyminds.net.ca-bundle

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
    </FilesMatch>

    <Directory /usr/lib/cgi-bin>
      SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \\
      nokeepalive ssl-unclean-shutdown \\
      downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    SSLCipherSuite AES256+EECDH:AES256+EDH
    SSLProtocol All -SSLv2 -SSLv3
    SSLCompression off
    SSLHonorCipherOrder On
    SSLUseStapling on
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    Header always set X-Frame-Options DENY
  </VirtualHost>
</IfModule>

Ces directives proviennent de Cipherli.st et assurent une configuration sécurisée :

  • Activation de suites de chiffrement offrant la Perfect Forward Secrecy
  • Désactivation des protocoles SSLv2 et SSLv3 obsolètes
  • Activation de HTTP Strict Transport Security (HSTS) pour forcer l’usage de HTTPS
  • Protection contre le clickjacking via l’entête X-Frame-Options
  • Activation de l’OCSP Stapling pour accélérer la vérification des certificats

On ajoute également une redirection permanente du port 80 vers le port 443 sécurisé :

<VirtualHost *:80>
  ServerName www.skyminds.net
  Redirect permanent / https://www.skyminds.net/
</VirtualHost>

Enfin, on redémarre Apache :

service apache2 restart

Pour vérifier la qualité de la configuration TLS, on peut utiliser l’outil SSL Server Test de Qualys, qui attribue une note (souvent A+ pour une bonne configuration).

Perfect Forward Secrecy (PFS)

La propriété de Perfect Forward Secrecy garantit que les données chiffrées aujourd’hui restent confidentielles même si la clé privée du serveur est compromise ultérieurement. Cette sécurité est essentielle pour éviter des failles comme celle du bug HeartBleed.

La PFS est obtenue en utilisant des suites de chiffrement spécifiques, comme celles recommandées par Cipherli.st.

Glossaire des termes clés

  • HTTPS : Protocole sécurisé de transfert hypertexte, combinant HTTP et TLS pour sécuriser les échanges web.
  • TLS (Transport Layer Security) : Protocole cryptographique assurant confidentialité, intégrité et authentification des données échangées.
  • Chiffrement : Processus de codage des données pour empêcher leur lecture par des tiers non autorisés.
  • Intégrité des données : Garantie que les données ne sont pas modifiées ou corrompues durant leur transfert.
  • Authentification : Vérification de l’identité d’un serveur ou d’un client pour sécuriser la communication.
  • Certificat numérique X.509 : Document électronique attestant l’identité d’un serveur ou d’un client, délivré par une autorité de certification.
  • Autorité de certification (CA) : Organisation qui délivre des certificats numériques après vérification de l’identité du demandeur.
  • Certificate Signing Request (CSR) : Fichier contenant une demande de signature de certificat, généré à partir d’une clé privée.
  • mod_ssl : Module Apache permettant d’activer le protocole SSL/TLS sur un serveur web.
  • Perfect Forward Secrecy (PFS) : Propriété cryptographique assurant la confidentialité des données même si la clé privée est compromise ultérieurement.
  • OCSP Stapling : Mécanisme d’optimisation pour la vérification en temps réel de la validité des certificats TLS.
  • HTTP Strict Transport Security (HSTS) : Politique de sécurité qui force les navigateurs à utiliser uniquement des connexions HTTPS vers un site donné.

Points clés à retenir

  • HTTPS protège la confidentialité, l’intégrité et l’authenticité des échanges entre un utilisateur et un site web.
  • Le protocole TLS est la base technique de HTTPS, utilisant des certificats numériques pour authentifier les serveurs (et parfois les clients).
  • La création d’un certificat TLS nécessite la génération d’une clé privée, d’une demande de signature (CSR), puis la signature par une autorité de certification.
  • La configuration d’Apache avec mod_ssl inclut l’activation du module SSL, la mise en place des certificats, et la sécurisation des protocoles et suites de chiffrement.
  • La Perfect Forward Secrecy est une mesure importante pour garantir la sécurité à long terme des communications chiffrées.
  • Des outils comme SSL Labs permettent de tester la qualité de la configuration TLS d’un serveur.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions