Sélectionner une page

Le protocole SSL (Secure Sockets Layer) et son successeur TLS (Transport Layer Security) sont des protocoles de cryptage qui visent à garantir que seules les deux parties communicantes peuvent lire les informations transmises.

Qu’est-ce qu’un certificat SSL ?

Un certificat SSL est un fichier de données hébergé sur un serveur web. Il contient des informations qui permettent l’établissement d’une connexion sécurisée avec un navigateur web.

L’objectif principal d’un certificat SSL est de garantir l’identité d’un site web et de protéger les informations échangées entre le navigateur web de l’utilisateur et le site.

Les certificats SSL sont généralement émis les autorités de certification (CA). Pour qu’un navigateur Web lui fasse confiance, une AC doit figurer dans la liste des AC de confiance du navigateur.

Le type de certificat SSL le plus courant est un certificat validé par le domaine. Ce type de certificat exige que le demandeur prouve qu’il est propriétaire du domaine avant que le certificat ne puisse être émis.

TLS, c’est quoi ?

TLS (Transport Layer Security) est un protocole qui assure la sécurité des communications sur Internet. TLS est une version améliorée de SSL et est compatible avec ce dernier

TLS peut être utilisé pour protéger le courrier électronique, la navigation sur le Web, la télécopie sur Internet, la messagerie instantanée et d’autres transmissions de données. Lorsque TLS est utilisé avec le courrier électronique, il fournit deux couches de sécurité : confidentialité des données et intégrité des données

TLS est parfois appelé SSL (Secure Sockets Layer). Cependant, SSL est en fait un prédécesseur de TLS. TLS a été défini pour la première fois dans la RFC 2246 (1999) et mis à jour dans la RFC 4346 (2006). SSL 3.0 est maintenant considéré comme obsolète.

Faut-il choisir la sécurisation SSL ou TLS ?

TLS et SSL sont deux protocoles qui appliquent les mêmes méthodes de cryptage et de vérification. Les différences résident dans la manière dont ils établissent un canal sécurisé :

  • Après avoir complété la description et les données du protocole, une connexion SSL est établie. Dans ce cas, le dialogue du protocole d’application (HTTP, SMTP…) est alors effectué.
  • Avec TLS, on établit d’abord une connexion non TLS, puis on passe en mode sécurisé (HTTP Upgrade, SMTP STARTTLS…).

Si vous devez choisir entre SSL et TLS pour établir un service, optez pour TLS. Il est plus intégré au protocole de l’application et donc préférable.

Principes du SSL : le chiffrement asymétrique

Le serveur dispose de deux clés de cryptage dans l’utilisation habituelle de SSL :

  • la clé réelle, appelée clé privée, que lui seul connaît ;
  • une clef publique, qu’il peut envoyer aux clients.

Lors de l’établissement d’une connexion SSL :

  • le serveur envoie en clair au client sa clef publique ;
  • le client génère une clef de chiffrement symétrique, et l’envoie au serveur, chiffrée avec sa clef publique ;
  • le serveur déchiffre cette clef publique avec sa clef privée ;
  • la suite de la connexion est alors chiffrée avec la clef symétrique, dont seuls le client et le serveur disposent.

Le chiffrement asymétrique peut également être utilisé pour établir un canal de chiffrement symétrique, qui est moins coûteux en termes de puissance de calcul pour une même sécurité.

Comment fonctionne la certification SSL ?

Avec un tel mécanisme, nous sommes certains que seule la personne qui possède la clé privée peut décrypter la connexion chiffrée. L’étape suivante consiste à déterminer si cette clé est bien celle de votre interlocuteur.

Un système de garantie centralisé est utilisé par SSL. Par conséquent, chaque serveur possède un certificat individuel qui indique :

  • sa clef publique de chiffrement ;
  • son identité (le plus souvent, son nom de domaine) ;
  • la signature numérique d’une autorité de certification, qui se porte garante de son identité.

Les clients Internet utilisent les certificats des principales autorités de certification pour s’authentifier.

Comment générer votre premier certificat SSL ?

Pour crypter vos communications, en particulier celles qui impliquent la transmission d’un mot de passe, vous avez besoin d’un certificat SSL et d’une clé privée. Si vous fournissez des services sécurisés au public, vous devez faire authentifier votre certificat par un organisme reconnu. Vous pouvez vous contenter d’un certificat auto-signé si vous êtes le seul utilisateur de ces services.

Dans tous les cas, vous pouvez stocker vos requêtes, clés et certificats dans les sous-répertoires req, private et certs du répertoire /etc/ssl/.

Qu’est-ce qu’un certificat certifié ?

La génération d’une clé et d’une demande de certificat est la première étape de l’obtention d’un certificat, qui ne nécessite pas la signature d’une autorité :

openssl req -new -out req/example.com.req -keyout private/example.com.key -nodes -utf8

Répondez aux questions sur votre identité et votre lieu, mais précisez bien votre nom de domaine comme nom commun (CN).

Si votre serveur répond à plusieurs noms, par exemple example.com., pop.example.com. et imap.example.com., avec un certificat simple vous ne pourrez servir qu’un de ces noms. Pour sécuriser vos services sur tous ces noms, renseignez-vous sur les jokers (wildcards) et sur le champ de noms alternatifs du sujet (Subject AltName) des certificats SSL.

Vous devez ensuite envoyer la clé à une autorité de certification, telle que StartSSL, CAcert, Let’s Encrypt et Sectigo pour vérification. Elle vous fournira alors un certificat signé après avoir examiné et accepté votre demande.

Le processus de certification SSL repose sur les autorités d’autorisation. Elles ne demandent généralement qu’une simple confirmation de l’identité du demandeur, ce qui serait plus difficile à vérifier pour les États.

CACert est une autorité de certification qui vérifie l’identité des personnes par le biais d’un réseau de confiance et utilise des points pour ce faire : les utilisateurs possédant plus de 100 points peuvent confirmer l’identité d’autres personnes jusqu’à 20 points.

StartSSL est une autorité de certification traditionnelle qui délivre gratuitement des certificats valables 12 mois. Cette autorité de certification est reconnue par les grands éditeurs de logiciels.

Qu’est-ce qu’un certificat auto-signé ?

Vous pouvez générer une clé privée et un certificat auto-signé en une seule fois avec la commande suivante :

openssl req -new -x509 -out certs/example.com.pem -keyout private/example.com.key -nodes -utf8

Répondez aux questions sur votre identité et votre lieu, mais précisez bien votre nom de domaine comme nom commun (CN).

Il est difficile d’échapper au fait qu’offrir un service fiable avec un certificat auto-signé (ou signé par une autorité inconnue) est inattaquable : le logiciel client affiche un avertissement de sécurité sur la possibilité d’usurper l’identité du serveur.

Ce risque est réel : à moins de vérifier son empreinte, rien ne garantit que ce certificat est bien celui du serveur que l’on cherche à contacter, et quelqu’un peut très bien intercepter vos communications. En revanche, souvenez-vous qu’il est toujours préférable de transmettre vos données ainsi que de le faire en clair, même si les logiciels client n’affichent en général pas le moindre avertissement dans ce dernier cas.

Un certificat SSL peut-il couvrir plusieurs noms de domaine ?

L’extension SSL subjectAltName peut être utilisée pour créer un certificat unique qui couvre plusieurs noms de domaine. Si vous souhaitez utiliser l’extension SSL subjectAltName, assurez-vous qu’elle est configurée dans votre logiciel client et dans le fichier de configuration de votre serveur :

<p>[ req ]<br>…<br>req_extensions = req_alt_name</p>

<p>[ req_alt_name ]<br>subjectAltName = DNS:www.example.com, DNS:webmail.example.com, DNS:toto.example.com</p>

Il faut ensuite générer la requête de certificat ou le certificat auto-signé de la façon habituelle, en veillant bien à fournir un des noms de domaine du subjectAltName comme nom commun (CN), par exemple pour une requête de certificat :

# openssl req -new -out req/example.com.req -keyout private/example.com.key -nodes -utf8

Comment utiliser son propre certificat SSL ?

Tout d’abord, vérifiez les droits d’accès à votre clef privée : si le certificat est public, seuls les administrateurs et les logiciels proposant une connexion sécurisée doivent pouvoir lire la clef.

Vous devez maintenant configurer vos serveurs logiciels pour utiliser votre certificat. Par exemple, pour Postfix :

smtpd_tls_cert_file = /etc/ssl/certs/example.com.pem
smtpd_tls_key_file = /etc/ssl/private/example.com.key
smtpd_tls_CAfile = /etc/ssl/certs/class3.pem

Certains logiciels ont besoin de charger le certificat et la clef, et parfois même le certificat de l’autorité depuis un seul fichier : pour cela, concaténez simplement ces fichiers dans un seul :

cat certs/example.com.pem private/example.com.key > private/example.com.bundle