Cette page explique très rapidement l'essentiel sur le protocole SSL/TLS et sur les certificats.
SSL (Secure Sockets Layer) est un protocole de sécurité qui établit une connexion sécurisée entre un client (comme un navigateur web) et un serveur (comme un site web). Il garantit la confidentialité, l'authenticité et l'intégrité des communications sur Internet.
Son successeur est le protocole TLS (Transport Layer Security), bien que le terme SSL soit souvent utilisé de manière interchangeable pour faire référence à TLS.
Voici comment SSL/TLS fonctionne pour sécuriser les communications entre un client et un serveur :
1. Handshake (Poignée de main) :
Lorsqu'un client se connecte à un serveur sécurisé, le processus commence par une poignée de main (handshake). Le client envoie une demande de connexion sécurisée au serveur, et le serveur répond avec son certificat numérique, qui contient sa clé publique.
2. Vérification du certificat :
Le client vérifie la validité du certificat du serveur en vérifiant son authenticité auprès d'une autorité de certification (CA) de confiance. Cela garantit que le serveur est bien celui qu'il prétend être.
3. Génération de clés de session :
Une fois que le client a vérifié le certificat du serveur, il génère des clés de session (clés de chiffrement) pour sécuriser les échanges ultérieurs. Ces clés sont utilisées pour chiffrer et déchiffrer les données échangées entre le client et le serveur.
4. Échange de clés publiques :
Le client envoie au serveur sa propre clé publique, qui sera utilisée par le serveur pour chiffrer les données qu'il envoie au client.
5. Chiffrement des données :
Une fois que les clés de session ont été échangées et que les clés publiques ont été partagées, les données échangées entre le client et le serveur sont chiffrées à l'aide de ces clés. Cela garantit que même si quelqu'un intercepte les données, il ne pourra pas les déchiffrer sans les clés appropriées.
6. Transmission sécurisée :
Les données chiffrées sont ensuite transmises entre le client et le serveur via une connexion sécurisée, ce qui réduit considérablement les risques d'interception ou de manipulation des données en transit.
7. Terminaison de session :
Une fois que la communication entre le client et le serveur est terminée, la session sécurisée est close de manière appropriée.
Le standard X.509 définit le format d'un certificat. Il permet d'associer une clé publique à un nom (qui désigne une entité qui peut être un serveur Web) de façon sure car vérifiée par une autorité de certification (CA) publiquement connue (éventuellement par une chaîne de CAs qui conduit à une CA publiquement connu). Les CAs publiquement connues sont référencées dans tous les navigateurs utilisés.
Un client peut utiliser la clé publique pour envoyer des messages cryptés au serveur. Le serveur peut décrypter le message puisqu'il a la clé privée associée à la clé publique (si vous voulez plus de détails vous pouvez lire, par exemple, l'article de Wikipédia sur la cryptographie asymétrique).
Quand le navigateur accède à un serveur Web qui utilise un certificat, il vérifie que l'URL du serveur correspond aux domaines indiqués dans le certificat (champ "Subject Alternative"). Si ça n'est pas le cas, il va lancer un avertissement. Il va vérifier aussi la date de début de validité et d'expiration du certificat.