Partie 3
Chiffrer les communications : HTTPS, TLS, certificats
Utiliser toujours HTTPS pour que les échanges client-serveur ne puissent être ni interceptés ni manipulés. Les données sensibles doivent aussi être chiffrées au repos dans les bases de données, pas seulement en transmission.
HTTPS s'appuie sur SSL/TLS. SSL a été remplacé par TLS, plus sécurisé. TLS offre :
| Fonction | Rôle |
|---|---|
| Chiffrement | chiffre les données échangées |
| Authentification | garantit que le serveur est bien celui qu'il prétend être, via des certificats numériques |
| Intégrité | les données ne sont pas modifiées pendant le transfert |
Les 4 étapes de la connexion sécurisée
- Le client demande l'initialisation d'une connexion sécurisée.
- Le serveur envoie son certificat SSL/TLS (vérification, validité, signature par un tiers de confiance).
- Le client transmet une clé de cryptage unique, encodée avec la clé publique du serveur.
- Le serveur la décrypte avec sa clé privée : la connexion HTTPS est établie.
Vérifie que tu as compris
Avec quelle clé le serveur décrypte-t-il la clé de cryptage envoyée par le client ?
Générer un certificat auto-signé (les 5 étapes du cours)
# 1. outils sudo apt install openssl nginx # 2. clé privée openssl genrsa -out /etc/ssl/private/nginx.key 2048 # 3. demande de signature de certificat (CSR) openssl req -new -key /etc/ssl/private/nginx.key -out /etc/ssl/private/nginx.csr # 4. certificat auto-signé, valable 365 jours openssl x509 -req -days 365 -in /etc/ssl/private/nginx.csr -signkey /etc/ssl/private/nginx.key -out /etc/ssl/certs/nginx.crt # 5. configurer l'API pour utiliser le certificat
Un certificat auto-signé convient aux tests locaux (TP) ; en production, le certificat est signé par un tiers de confiance.
Vérifie que tu as compris
Dans la commande openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt, que produit-on ?