HTTPS
HTTPS (Hypertext Transfer Protocol Secure) est un protocole de communication utilisé sur Internet pour sécuriser les échanges de données entre un navigateur web (ou un client) et un serveur web. HTTPS est une extension sécurisée du protocole HTTP et fonctionne par défaut sur le port 443.
Sécurité des données
HTTPS assure trois principes fondamentaux dans la sécurisation des échanges de données :
- Confidentialité : Les données échangées entre le client et le serveur sont chiffrées, ce qui empêche les tiers d'intercepter et de lire les informations transmises.
- Intégrité : HTTPS garantit que les données ne sont pas modifiées pendant leur transit. Si une modification survient, elle sera détectée, assurant ainsi la fiabilité des échanges.
- Authenticité : Le certificat TLS utilisé par le serveur permet au client de vérifier l'identité du serveur, assurant que l'utilisateur communique avec le serveur légitime et non avec un intermédiaire malveillant (comme dans une attaque de type "man-in-the-middle").
Chiffrement
HTTPS repose sur un chiffrement TLS (Transport Layer Security), qui est l'évolution moderne du protocole SSL (Secure Sockets Layer), désormais obsolète. Le chiffrement repose sur l'utilisation de clés publiques et privées pour protéger les données échangées :
- Négociation d'une clé de session : Lorsque le client se connecte au serveur via HTTPS, une clé de session symétrique est créée et utilisée pour chiffrer toutes les communications après l'établissement initial de la connexion.
- Protection des données : Une fois la clé de session établie, toutes les données échangées sont chiffrées à l'aide de cette clé, empêchant tout tiers non autorisé de lire ou de modifier ces données.
Certificats TLS
Les sites web qui utilisent HTTPS doivent obtenir un certificat TLS auprès d'une autorité de certification (CA) de confiance, comme Let's Encrypt, DigiCert, ou GlobalSign. Ce certificat remplit plusieurs rôles :
- Authentification du serveur : Le certificat prouve que le site web appartient bien au propriétaire légitime du domaine.
- Chiffrement des communications : Le certificat contient une clé publique utilisée par le client pour chiffrer les données envoyées au serveur.
- Validation de la confiance : Les navigateurs web vérifient que le certificat est émis par une autorité de certification reconnue et valide.
Note
TLS (Transport Layer Security) est le successeur du protocole SSL (Secure Sockets Layer), qui est maintenant obsolète en raison de failles de sécurité. Il est recommandé d'utiliser TLS 1.2 ou TLS 1.3 pour garantir une sécurité optimale lors des échanges via HTTPS.
Fonctionnement de HTTPS
-
Initialisation de la connexion
- Lorsqu'un utilisateur entre une URL HTTPS dans son navigateur web et appuie sur "Entrée", une demande de connexion sécurisée est initiée.
- Le navigateur contacte le serveur web distant via le protocole HTTPS, qui utilise par défaut le port 443.
- Le navigateur envoie un message "ClientHello" au serveur.
- Ce message contient des informations sur les fonctionnalités de sécurité prises en charge par le client, notamment les versions de TLS (par exemple, TLS 1.2 ou 1.3), les algorithmes de chiffrement (comme AES, RSA), et les méthodes de compression disponibles.
-
Réponse du serveur et envoi du certificat
- Le serveur web reçoit le "ClientHello" et répond avec un "ServerHello".
- Dans cette réponse, le serveur choisit la version de TLS à utiliser, les algorithmes de chiffrement et les paramètres pour la session en fonction de ce qui est pris en charge par le client et le serveur.
- Le serveur envoie également son certificat numérique pour s'authentifier auprès du client. Ce certificat est émis par une autorité de certification (CA) de confiance et contient la clé publique du serveur.
-
Vérification du certificat
- Le navigateur client vérifie la validité du certificat en le comparant avec sa liste de CAs de confiance (préinstallée dans le navigateur ou le système d'exploitation).
- Si le certificat est valide et n'est pas révoqué, le client continue l'échange. Sinon, il affiche un avertissement indiquant que la connexion n'est pas sécurisée.
-
Création de la clé de session (Premaster Secret)
- Le navigateur client génère une clé de session aléatoire, appelée "premaster secret", qui servira à chiffrer toutes les données échangées entre le client et le serveur.
- Cette clé de session est chiffrée avec la clé publique du serveur (extrait du certificat) pour assurer sa sécurité, et est ensuite envoyée au serveur.
-
Déchiffrement de la clé de session
- Le serveur reçoit la clé de session chiffrée et la déchiffre à l'aide de sa clé privée. Seul le serveur, détenteur de la clé privée, peut déchiffrer cette clé de session.
- À ce stade, le navigateur client et le serveur partagent maintenant une clé de session commune et secrète, qui sera utilisée pour chiffrer et déchiffrer les communications.
-
Confirmation de la session (Finished)
- Une fois que la clé de session est partagée, le serveur envoie un message "Finished" au navigateur client pour confirmer que la session sécurisée est établie avec succès.
- De son côté, le client envoie également un "Finished" au serveur pour finaliser le processus de négociation.
-
Communication sécurisée
- À partir de ce moment, le navigateur client et le serveur utilisent la clé de session commune pour chiffrer et déchiffrer toutes les données échangées pendant la session.
- Toutes les données, y compris les requêtes HTTP (comme GET, POST) et les réponses du serveur, sont chiffrées pour garantir la confidentialité et l'intégrité des informations échangées.
-
Fermeture de la session
- Lorsque la communication est terminée, le client et le serveur peuvent convenir de fermer la session en envoyant des messages "Finished" finaux.
- La clé de session est ensuite détruite et ne peut plus être utilisée, garantissant que les communications futures nécessiteront l'établissement d'une nouvelle session sécurisée.
Certificat TLS
Un certificat TLS (Transport Layer Security) est un fichier numérique utilisé pour établir une communication sécurisée entre un client (comme un navigateur web) et un serveur (comme un site web). Il permet d'authentifier le serveur et de chiffrer les échanges de données.
Authentification du serveur
Lorsque vous vous connectez à un site web sécurisé (https://
), le serveur web envoie son certificat TLS au navigateur. Ce certificat contient :
- Une clé publique.
- Des informations sur le propriétaire du site, telles que le nom de domaine et l'autorité de certification (CA) qui l'a émis.
- Une signature numérique de la CA, qui prouve l'intégrité du certificat.
Vérification de l'authenticité
Le navigateur vérifie la validité du certificat en utilisant la clé publique de la CA. Cette vérification inclut plusieurs étapes :
- Le navigateur s'assure que le certificat est signé par une CA de confiance.
- Il vérifie si le certificat n'a pas été révoqué, via la CRL (Certificate Revocation List) ou en utilisant OCSP (Online Certificate Status Protocol).
- Si le certificat est valide et signé par une autorité reconnue, le navigateur considère la connexion comme sécurisée. Sinon, il avertit l'utilisateur que la connexion n'est pas sécurisée.
Certificate Authority (CA)
Une CA (Certificate Authority) et une CA intermédiaire sont des entités impliquées dans la gestion et la délivrance de certificats numériques.
CA racine (Root CA)
- Une CA racine est une autorité de certification de confiance qui émet et signe ses propres certificats racines.
- Les navigateurs et systèmes d'exploitation incluent une liste de ces CAs de confiance préinstallée, appelée chaîne de certificats.
- La sécurité des CAs racines est primordiale car elles forment la base de confiance du système de certification.
Les Root CAs sont souvent des organisations hautement sécurisées telles que des entreprises technologiques majeures, des institutions financières, ou des organismes gouvernementaux.
CA intermédiaire (Intermediate CA)
- Une CA intermédiaire est une entité qui agit en tant qu'intermédiaire entre une CA racine et les entités demandant des certificats (par exemple, des sites web).
- La CA intermédiaire émet des certificats pour les sites web, mais sa propre sécurité est garantie par une CA racine. Cela permet une délégation de confiance tout en protégeant la clé privée de la CA racine.
- Si une CA intermédiaire est compromise, elle peut être révoquée sans compromettre la CA racine.
Les Intermediate CAs sont généralement des entreprises spécialisées dans la délivrance de certificats, telles que DigiCert, GlobalSign, ou Comodo (aujourd'hui appelé Sectigo).
Types de certificats TLS
Il existe plusieurs types de certificats TLS, chacun offrant des niveaux de validation différents.
DV - Domain Validated
- Ces certificats valident uniquement la propriété du domaine.
- Ils sont émis rapidement et à moindre coût, souvent utilisés pour des blogs ou petits sites web.
- Ne fournissent pas d'information sur l'organisation propriétaire du site.
Exemple : Etat de Fribourg
OV - Organization Validated
- Ces certificats valident le domaine et l'entité propriétaire, comme une entreprise ou une organisation.
- Ils offrent un niveau de confiance intermédiaire, généralement utilisé par des entreprises établissant une crédibilité en ligne.
Exemple : digitec.ch
EV - Extended Validation
- Les certificats EV nécessitent une vérification approfondie de l'identité de l'entité propriétaire.
- Les navigateurs affichent souvent un indicateur spécial ou un nom d'entreprise dans la barre d'adresse, pour montrer que le certificat a été validé rigoureusement.
- Utilisé par des institutions financières ou des sites de commerce en ligne pour renforcer la confiance des utilisateurs.
Exemple : Apple Inc.
Let's Encrypt
Let's Encrypt est une autorité de certification à but non lucratif qui fournit des certificats TLS gratuitement. Son objectif est de promouvoir la sécurité sur Internet en rendant l'obtention de certificats TLS accessible à tous.
- Let's Encrypt utilise des certificats DV (Domain Validated) pour valider uniquement la propriété du domaine.
- Elle propose des outils comme Certbot pour automatiser l'installation et le renouvellement des certificats, garantissant ainsi que les certificats restent toujours à jour.
Fondateurs de Let's Encrypt
- Electronic Frontier Foundation
- Mozilla Foundation
- University of Michigan
- Akamai Technologies
- Cisco Systems
Site web : Let's Encrypt
Lien utile
Service d'analyse de la configuration SSL/TLS d'un serveur web : SSL Server Test