HTTPS

Secure Sockets Layer (SSL), et son successeur Transport Layer Security (TLS), sont des protocoles de sécurisation des échanges sur Internet. Le protocole SSL a été développé à l’origine par Netscape. L’IETF (Internet Engineering Task Force) en a poursuivi le développement en le rebaptisant Transport Layer Security (TLS). On parle parfois de SSL/TLS pour désigner indifféremment SSL ou TLS.

Protocole SSL

SSL 2.0 est la première version parue, elle possédait un certain nombre de défauts de sécurité, parmi lesquels la possibilité de forcer l’utilisation d’algorithmes de chiffrement plus faibles, ou bien une absence de protection pour la prise de contact et la possibilité pour un attaquant d’exécuter des attaques par troncature. Les protocoles PCT 1.0, puis SSL 3.0, furent développés pour résoudre la majeure partie de ces problèmes, SSL 3.0 devenant rapidement le protocole le plus populaire pour sécuriser les échanges sur Internet.

Le SSL n’est théoriquement plus utilisé car toutes ses versions sont bannies, néanmoins le mot reste d’usage dans le langage courant.

Missions

Le protocole SSL/TLS a plusieurs missions :

Garantir la confidentialité des données échangées
Assurer l’intégrité de ces données
Authentifier le serveur
Optionnellement authentifier le client via l’utilisation d’un certificat numérique

Le protocole SSL crée un canal de communication entre le client et le serveur indépendamment du protocole utilisé, il sécurise ainsi les transactions sur le web (protocole HTTP) ou les connexions via protocole FTP, IMAP ou POP, etc…

Ce canal de communication est un tunnel opaque qui empêche quiconque de voir ce qui y transite.

Il fonctionne sur l’établissement de clés privées et publiques qui s’apparentent à l’utilisation d’une serrure et de sa clé :

Travaux pratiques

Préparer la demande

openssl req -new -sha256 -newkey rsa:2048 -nodes -utf8 -days 70 -keyout https.key -out https.csr

2 fichiers générés la clé secrète et la demande de certificat

Envoyer la demande à une autorité de certification

Configurer le serveur web

Copier le fichier retourné et la clé dans /etc/ssl/

Modifier le fichier de configuration /etc/nginx/site-available/default

server {
  listen   443;
  ssl       on;
  ssl_certificate       /etc/ssl/your_domain_name.pem;
  ssl_certificate_key   /etc/ssl/your_domain_name.key;

LibreSSL

libressl ^
req -new -sha256 -nodes -utf8 -newkey rsa:2048 -days 700 ^
-keyout keys\https.key ^
-config https.cnf ^
-out https.csr

Accepter la demande

libressl ^
x509 -req -sha256 ^
-in requetes\%1%.csr ^
-CA autorite\autority.crt ^
-CAkey autorite\autority.key ^
-CAcreateserial ^
-extensions v3_req ^
-extfile %1%.extensions.cnf ^
-out certificats\%1%.crt
libressl req -in https.csr -noout -text
CA
Certificate Authority ou Autorité de certification. Agence notariale reconnue pour son honnêteté et sa rigueur.
CSR
Certificate Signing Request. C’est un fichier de demande de certificat. Il est envoyé aux autorités de certification. Cette demande signée par l’autorité revient sous forme de certificat.
.key
Fichier pem contenant uniquement la clé privée.