Introduction à HTTPS
Hypertext Transfer Protocol Secure (en anglais : Hypertext Transfer Protocol Secure, abrégé HTTPS, souvent appelé HTTP over TLS, HTTP over SSL ou HTTP Secure) est un protocole de transmission sécurisé réseau. Avant de le présenter en détail, commençons par présenter le protocole HTTP courant. HTTP est un protocole utilisé lorsque nous naviguons normalement sur des pages web. Les données transmises par le protocole HTTP ne sont pas chiffrées, c'est-à-dire en clair, donc utiliser HTTP pour transmettre des informations privées est très peu sécurisé. HTTP utilise le port 80 pour communiquer, tandis que HTTPS utilise le port 443 pour communiquer. Sur les réseaux informatiques, HTTPS communique via le protocole de transfert hypertexte (HTTP), mais utilise SSL/TLS pour chiffrer les paquets de données. L'objectif principal du développement de HTTPS est de fournir une authentification d'identité pour les serveurs web et de protéger la confidentialité et l'intégrité des données échangées. Ce protocole a été proposé pour la première fois par Netscape en 1994, puis étendu à Internet.
Comment fonctionne HTTPS
Avant de transmettre des données, HTTPS nécessite une poignée de main entre le client (navigateur) et le serveur (site web). Pendant la poignée de main, les informations de mot de passe utilisées par les deux parties pour chiffrer les données transmises sont établies. Le protocole TLS/SSL n'est pas seulement un ensemble de protocoles de transmission chiffrés ; c'est une œuvre d'art soigneusement conçue par des artistes. TLS/SSL utilise le chiffrement asymétrique, le chiffrement symétrique et des algorithmes HASH. Le processus détaillé de la poignée de main est décrit comme suit :
- 1) Le navigateur envoie au site web un ensemble de règles de chiffrement qu'il prend en charge.
- 2) Le site web sélectionne parmi elles un ensemble d'algorithmes de chiffrement et d'algorithmes HASH, puis renvoie ses propres informations d'identité au navigateur sous la forme d'un certificat. Le certificat contient des informations telles que l'adresse du site web, la clé publique de chiffrement et l'émetteur du certificat.
- 3) Une fois que le navigateur a obtenu le certificat du site web, il doit effectuer les opérations suivantes : a) Vérifier la légitimité du certificat (si l'organisme émetteur est légitime, si l'adresse du site web contenue dans le certificat correspond à l'adresse visitée, etc.). Si le certificat est fiable, un petit cadenas apparaîtra dans la barre du navigateur ; sinon, une invite indiquant que le certificat n'est pas fiable sera affichée. b) Si le certificat est fiable, ou si l'utilisateur accepte un certificat non fiable, le navigateur génère un mot de passe composé d'une chaîne de nombres aléatoires et le chiffre avec la clé publique fournie dans le certificat. c) Utiliser l'algorithme HASH convenu pour calculer le message de négociation, chiffrer le message avec le nombre aléatoire généré, et enfin envoyer toutes les informations générées précédemment au site web.
- 4) Après avoir reçu les données envoyées par le navigateur, le site web doit effectuer les opérations suivantes : a) Utiliser sa propre clé privée pour déchiffrer les informations et extraire le mot de passe, utiliser le mot de passe pour déchiffrer le message de négociation envoyé par le navigateur, et vérifier si le HASH correspond à celui envoyé par le navigateur. b) Utiliser le mot de passe pour chiffrer un message de négociation et l'envoyer au navigateur.
- 5) Le navigateur déchiffre et calcule le HASH du message de négociation. S'il est cohérent avec le HASH envoyé par le serveur, le processus de négociation se termine. Ensuite, toutes les données de communication seront chiffrées à l'aide de l'algorithme de chiffrement symétrique avec le mot de passe aléatoire généré précédemment par le navigateur.
Ici, le navigateur et le site web s'envoient mutuellement des messages de négociation chiffrés et les vérifient. Le but est de s'assurer que les deux parties ont obtenu le même mot de passe et peuvent chiffrer et déchiffrer les données normalement, ce qui sert de test pour la transmission ultérieure de données réelles. De plus, les algorithmes de chiffrement et de HASH couramment utilisés par HTTPS sont les suivants :
- Algorithmes de chiffrement asymétrique : RSA, DSA/DSS
- Algorithmes de chiffrement symétrique : AES, RC4, 3DES
- Algorithmes de hachage : MD5, SHA1, SHA256
Le diagramme de séquence de communication pour HTTPS est le suivant :

Différences entre le protocole HTTPS et le protocole HTTP :
- Le protocole HTTPS nécessite de demander un certificat auprès d'une CA. Généralement, il y a très peu de certificats gratuits, et des frais sont requis.
- HTTP est le protocole de transfert hypertexte, et les informations sont transmises en clair, tandis que HTTPS est un protocole de transmission sécurisé et chiffré SSL.
- HTTP et HTTPS utilisent des méthodes de connexion complètement différentes et des ports différents : le premier utilise 80, le second utilise 443.
- Les connexions HTTP sont très simples et sans état.
- Le protocole HTTPS est un protocole réseau construit avec SSL + HTTP, capable de transmission chiffrée et d'authentification d'identité, et il est plus sécurisé que le protocole HTTP.
Certificat SSL
D'après ce qui précède, nous pouvons comprendre qu'une partie essentielle de HTTPS est la poignée de main avant la transmission des données, au cours de laquelle le mot de passe pour le chiffrement des données est déterminé. Pendant la poignée de main, le site web envoie un certificat SSL au navigateur. Semblable à la carte d'identité que nous utilisons dans la vie quotidienne, le certificat SSL est la preuve d'identité d'un site web qui prend en charge HTTPS. Le certificat SSL contient des informations telles que le nom de domaine du site web, la période de validité du certificat, l'émetteur du certificat et la clé publique utilisée pour chiffrer le mot de passe de transmission. Étant donné que le mot de passe chiffré avec la clé publique ne peut être déchiffré que par la clé privée générée lors de la demande du certificat, le navigateur doit d'abord vérifier si le nom de domaine actuellement visité correspond au nom de domaine lié au certificat avant de générer le mot de passe, et également vérifier l'émetteur du certificat. Si la vérification échoue, le navigateur affichera un message d'erreur de certificat. Dans cette section, je décrirai le processus de vérification des certificats SSL et les problèmes de sécurité auxquels les utilisateurs individuels doivent faire attention lorsqu'ils utilisent des certificats SSL en visitant des sites web HTTPS.
Types de certificats
En fait, les certificats que nous utilisons sont de plusieurs types, et les certificats SSL ne sont que l'un d'entre eux. Le format des certificats est défini par la norme X.509. Les certificats SSL sont chargés de transmettre les clés publiques et sont un type de certificat PKI (Public Key Infrastructure). Les certificats courants que nous rencontrons peuvent être grossièrement classés dans les types suivants selon leur usage :
- 1. Certificats SSL, utilisés pour chiffrer le protocole HTTP, c'est-à-dire HTTPS.
- 2. Certificats de signature de code, utilisés pour signer des fichiers binaires, tels que les pilotes du noyau Windows, les plugins Firefox, la signature de code Java, etc.
- 3. Certificats client, utilisés pour chiffrer les e-mails.
- 4. Certificats à deux facteurs. La clé USB utilisée dans la banque en ligne professionnelle utilise ce type de certificat.
Ces certificats sont tous délivrés par des autorités de certification certifiées, que l'on appelle organisations CA (Certificate Authority). Selon que le demandeur est une entreprise ou un particulier, les types de certificats pouvant être demandés sont différents, et les prix aussi. Les certificats délivrés par les organisations CA sont des certificats de confiance. Pour les certificats SSL, si le site web visité correspond au site web lié au certificat, il peut passer la vérification du navigateur sans afficher d'erreur.
Demande de certificat SSL et règles
Les certificats SSL peuvent être demandés auprès d'organisations CA en payant des frais, ou ils peuvent être auto-générés. Les certificats délivrés par les organisations CA sont très chers, et leur période de validité va généralement d'un à trois ans (nombre d'années différent, prix différent). Après expiration, vous devez payer à nouveau pour en demander un, donc généralement seules les entreprises demandent des certificats. Cependant, avec l'augmentation des sites web personnels, il existe désormais des services de certificats SSL pour les particuliers, qui sont relativement moins chers. En Chine, vous pouvez en demander un pour un peu plus de 400 yuans, et à l'étranger il existe même des certificats SSL gratuits disponibles à la demande. Lors de la demande d'un certificat SSL, vous devez fournir le nom de domaine du site web, la licence commerciale et les informations d'identité du demandeur à l'organisation CA. Le nom de domaine du site web est très important ; le demandeur doit prouver qu'il possède le nom de domaine. Si des certificats SSL prenant en charge Hotmail.com et Gmail.com pouvaient être demandés sans problème, les pirates n'auraient pas besoin d'utiliser de faux certificats pour tromper.
De plus, un certificat est généralement lié à un seul nom de domaine. Si l'organisation CA est de bonne humeur, elle peut en lier un de plus gratuitement. Par exemple, si le nom de domaine lié lors de la demande est www.example.com, alors le certificat n'est considéré comme fiable que lorsque l'adresse du navigateur est https://www.example.com. Si l'adresse est https://tt.example.com ou https://login.example.com, alors comme le nom de domaine visité est différent du nom de domaine lié au certificat, il sera toujours affiché comme non fiable par le navigateur.
Les organisations CA proposent également des demandes pour des domaines wildcard (par exemple, *.example.com). Un domaine wildcard équivaut à lier tous les sous-domaines sous le domaine principal, ce qui est donc très pratique à utiliser, mais le prix est aussi extrêmement élevé. Un domaine wildcard coûte environ 5,000 yuan par an, et seules les entreprises peuvent en faire la demande.
Regardons maintenant les informations contenues dans un certificat :

Lors de la visite de Hotmail, il redirige vers login.live.com. À ce moment-là, il y a un petit cadenas dans le navigateur IE. Cliquez sur ce petit cadenas puis cliquez sur « View Certificate » pour voir la fenêtre de certificat affichée ci-dessus. Ici, nous pouvons voir que ce certificat n'a qu'un seul objectif : prouver les informations d'identité à un ordinateur distant. Les certificats ont de nombreux usages, et SSL n'est que l'un d'entre eux. Dans le champ « Délivré à » se trouve le nom de domaine lié lors de la demande du certificat ; le « Délivré par » ci-dessous est l'émetteur du certificat. Les deux dates en bas sont la date de demande et la date d'expiration du certificat. Ici, nous pouvons prêter attention aux informations dans « Délivré par ». Elles contiennent les mots « Extended Validation SSL », ce qui indique que ce certificat est un certificat EV SSL (certificat SSL à validation étendue). Les certificats EV SSL ont une caractéristique : ils peuvent faire passer la barre d'adresse du navigateur au vert et afficher le nom de l'entreprise à laquelle appartient le certificat, comme affiché ci-dessous :

Par rapport aux autres certificats, les certificats EV SSL sont plus coûteux.
Ce qui précède décrit le cas de la demande de certificats auprès d’organisations de CA. Si un site web personnel a seulement besoin d’une transmission chiffrée, il peut aussi créer son propre certificat SSL. Un certificat autogénéré ne sera pas considéré comme fiable par le navigateur, et un avertissement sera affiché lors de l’accès, car la vérification du certificat échoue.
Processus de vérification des certificats
Les certificats sont organisés sous la forme d’une chaîne de certificats. Lors de l’émission d’un certificat, il doit d’abord exister un certificat racine émis par une CA racine, puis la CA racine émet un certificat de CA intermédiaire, et enfin la CA intermédiaire émet le certificat SSL spécifique. On peut le comprendre ainsi : une CA racine est comme une entreprise, et le certificat racine est son justificatif d’identité. Chaque entreprise possède différents services qui émettent des certificats à des fins différentes. Ces différents services sont les CA intermédiaires, et ils utilisent des certificats intermédiaires comme justificatifs d’identité. L’un des services est spécifiquement chargé de délivrer des certificats SSL. Lorsque le certificat racine, le certificat intermédiaire et le certificat SSL finalement demandé sont reliés entre eux, ils forment une chaîne de certificats, également appelée chemin de certificat. Lors de la vérification d’un certificat, le navigateur appelle l’interface du gestionnaire de certificats du système pour vérifier tous les certificats du chemin de certificat niveau par niveau. Le résultat global de la vérification ne sera considéré comme fiable que si tous les certificats du chemin sont fiables. Prenons encore l’exemple du certificat login.live.com. Lors de la consultation du certificat, cliquez sur l’onglet « Chemin de certificat » et l’affichage sera tel qu’indiqué ci-dessous :

Le certificat racine est le certificat le plus critique. Si le certificat racine n’est pas approuvé, alors tous les certificats émis sous celui-ci ne sont pas approuvés. Lors de l’installation, le système d’exploitation installe par défaut certains certificats racine d’AC approuvés. Vous pouvez exécuter « certmgr.msc » dans la boîte de dialogue « Exécuter » pour lancer le Gestionnaire de certificats, comme indiqué ci-dessous :

Les certificats racine ont une longue période de validité et prennent en charge de nombreux usages, ce qui facilite l’émission de certificats intermédiaires de différents types d’usage. Les certificats intermédiaires ont un usage unique et une période de validité relativement plus courte, mais bien plus longue que les certificats SSL spécifiques.
Si la vérification du certificat SSL échoue, différents navigateurs affichent les messages d’erreur suivants :


Trois raisons peuvent expliquer l’échec de la vérification d’un certificat SSL :
- 1. Le certificat SSL n’a pas été émis par une AC approuvée.
- 2. Le certificat a expiré.
- 3. Le nom de domaine du site web auquel on accède ne correspond pas au nom de domaine lié au certificat.
Ces trois raisons sont également les messages fournis par les navigateurs IE.
Astuce : si vous détestez particulièrement une AC racine, vous pouvez supprimer son certificat racine, et tous les certificats qu’elle a émis ne seront alors plus approuvés.
Problèmes de sécurité liés aux certificats SSL
La méthode d’attaque la plus courante contre HTTPS est l’usurpation de certificat SSL, également appelée détournement SSL, qui est une attaque typique de l’homme du milieu. Cependant, le détournement SSL n’est pas utilisé uniquement à des fins d’attaque. Dans certains cas particuliers, nous pouvons utiliser le détournement SSL pour accéder plus facilement au réseau. J’y reviendrai plus tard.
Si vous ne prêtez pas attention aux avertissements de sécurité du navigateur, il est facile de devenir victime d’un détournement SSL utilisé à des fins d’attaque. Lorsqu’un homme du milieu présent sur le réseau lance une attaque par détournement SSL, l’attaquant doit falsifier un certificat SSL et l’envoyer au navigateur. À ce stade, comme le certificat SSL falsifié n’est pas approuvé, le navigateur affichera un avertissement.
Il y a une idée fausse ici. Lorsqu'un certificat SSL n'est pas approuvé, cela ne signifie pas nécessairement qu'un détournement SSL est en cours. Une exception est que certains sites personnels ne peuvent pas se permettre des certificats SSL légitimes, alors ils créent leurs propres certificats SSL pour chiffrer les données transmises. Si vous visitez fréquemment un site personnel et que vous savez à quoi sert le site, alors vous n'avez pas besoin de vous inquiéter de cette situation. Mais si vous visitez des sites de banque en ligne, de paiement en ligne ou d'entreprise tels que hotmail.com, gmail.com, etc., ces sites demanderont certainement des certificats SSL légitimes (sauf 12306.cn). Une fois que le certificat SSL n'est pas approuvé, vous devez résolument arrêter la visite. À ce moment-là, il doit y avoir un comportement anormal dans le réseau, et les utilisateurs de réseau communautaire à large bande doivent y prêter une attention particulière.
Par conséquent, en tant qu'utilisateur individuel, vous devez savoir quel site web vous visitez. Si vous êtes simplement un internaute ordinaire sans beaucoup de connaissances informatiques, je pense que vous ne visiterez pas souvent ces sites personnels qui créent leurs propres certificats SSL (sauf 12306.cn). Par conséquent, si vous ne pouvez pas déterminer si le réseau est anormal, dès qu'il y a un problème avec le certificat, cessez simplement de visiter.
Astuce : pour 12306.cn, assurez-vous de suivre ce que dit le site web : « Pour garantir un achat de billets fluide, veuillez télécharger et installer le certificat racine. »
Enfin, résumons les points auxquels il faut faire attention lors de l'utilisation des certificats SSL :
- 1. Sauf si c'est nécessaire, n'installez pas de certificats racine à la légère. Lors de l'installation d'un certificat racine, assurez-vous de clarifier la source du certificat.
- 2. Pour les sites web tels que la banque en ligne, le paiement en ligne et les courriels importants, assurez-vous que le certificat SSL ne présente aucun problème. Si le navigateur émet un avertissement d'erreur de certificat SSL, vous devez refuser de visiter. Certains utilisateurs de réseau communautaire à large bande doivent y prêter une attention particulière.
- 3. Étant donné qu'il est désormais relativement bon marché pour les particuliers de demander des certificats SSL, veillez à vous méfier des sites de phishing qui possèdent de véritables certificats SSL (plus courants à l'étranger). Pour les sites de phishing, vérifiez attentivement le nom de domaine. De plus, ne croyez aucun message de loterie ou de prix, et installez un logiciel de sécurité avec protection anti-phishing.