Gestion des Certificats SSL/TLS
Ce document explique comment générer, gérer et convertir des certificats SSL/TLS en utilisant OpenSSL. Il couvre la création d’une autorité de certification (CA) auto-signée, la génération de certificats pour des hôtes spécifiques, ainsi que l’intégration des certificats sur des serveurs web comme Apache et Nginx.
Index
Bonnes Pratiques pour la CA Racine et les Certificats
La gestion sécurisée des certificats SSL/TLS et de la CA racine est essentielle pour garantir la confidentialité, l’intégrité et l’authenticité des connexions SSL/TLS. Voici un tableau des bonnes pratiques à appliquer.
Bonnes Pratiques |
Description |
---|---|
Isoler la clé privée de la CA racine |
La clé privée de la CA racine doit être générée et conservée dans un environnement sécurisé, idéalement hors ligne. Cela réduit les risques d’accès non autorisé. |
Utiliser une clé RSA de haute qualité |
Pour une sécurité renforcée, optez pour une clé RSA de 4096 bits ou une clé basée sur des courbes elliptiques (ECC), qui offre une sécurité équivalente avec une longueur de clé plus courte. |
Limiter la durée de vie du certificat CA |
Bien que vous puissiez choisir une durée de vie longue pour le certificat racine (par exemple, 10 ou 20 ans), il est recommandé de planifier des rotations régulières pour renforcer la sécurité. Les CA intermédiaires peuvent avoir des durées de vie plus courtes et être renouvelées périodiquement. |
Utiliser des CA intermédiaires |
Ne signez pas directement les certificats des services avec la CA racine. Utilisez plutôt des CA intermédiaires pour gérer les certificats des serveurs. Cela ajoute une couche de sécurité et permet de révoquer ou renouveler les CA intermédiaires sans compromettre la CA racine. |
Stocker les clés et certificats de manière sécurisée |
Utilisez des dispositifs matériels de sécurité (HSM - Hardware Security Module) pour stocker la clé privée de la CA racine lorsque cela est possible. Les HSM sont conçus pour protéger les clés contre le vol ou l’utilisation non autorisée. |
Appliquer une authentification multi-facteurs (MFA) |
Si la CA racine est maintenue sur un serveur, configurez l’authentification multi-facteurs pour y accéder. Combinez cela avec une séparation des rôles pour que seules les personnes autorisées aient les droits nécessaires. |
Restreindre l’accès aux commandes de la CA |
Mettez en place des politiques strictes de contrôle d’accès pour limiter les utilisateurs pouvant exécuter des commandes de CA, en particulier celles qui signent des certificats. |
Sauvegarder la clé privée et le certificat racine |
Réalisez des sauvegardes sécurisées de la clé privée de la CA racine et de son certificat, et conservez-les dans des emplacements séparés pour éviter toute perte de données critique. |
Intégration des Certificats
Note
Pourquoi intégrer les certificats dans un serveur ?
Intégrer un certificat sur un serveur (Apache, Nginx) assure que les connexions au serveur sont sécurisées et que les clients peuvent vérifier l’identité de l’hôte.
Emplacements standards des certificats et clés
Les certificats et les clés doivent être stockés dans des répertoires spécifiques selon les distributions :
- Red Hat / CentOS :
Certificats :
/etc/pki/tls/certs
Clés privées :
/etc/pki/tls/private
- Debian / Ubuntu :
Certificats :
/etc/ssl/certs
Clés privées :
/etc/ssl/private
Note : Assurez-vous que les permissions sont correctement configurées. Les clés privées doivent être protégées et uniquement accessibles par les utilisateurs autorisés, généralement avec des permissions 600
.
Installation des certificats dans un VirtualHost SSL pour Apache
Copiez les fichiers de certificat (CRT) et de clé (KEY) dans le répertoire d’Apache.
Modifiez la configuration du VirtualHost SSL :
ServerName number24.fr SSLCertificateFile /etc/ssl/number24.fr/number24.fr.crt SSLCertificateKeyFile /etc/ssl/number24.fr/number24.fr.key
Rechargez Apache pour appliquer les changements :
systemctl restart apache2 # (ou httpd selon la distribution)
Installation des certificats dans Nginx
Placez les fichiers dans le répertoire de configuration de Nginx.
Ajoutez les chemins dans le bloc SSL de Nginx :
ssl on; ssl_certificate /etc/ssl/number24.fr/number24.fr.crt; ssl_certificate_key /etc/ssl/number24.fr/number24.fr.key;
Redémarrez Nginx :
systemctl restart nginx
Conversion des Certificats
Note
Pourquoi convertir les certificats ?
Les certificats sont utilisés dans divers formats selon les systèmes. Par exemple, Windows utilise souvent le format .pfx
, alors qu’Apache préfère le format .pem
.
Types de certificats et conversions possibles
Voici un tableau résumant les différents types de certificats, leurs extensions, conversions possibles et les besoins en clé privée.
Type de certificat |
Extensions |
Conversions possibles |
Clé privée requise |
Description |
---|---|---|---|---|
PEM |
.pem, .crt, .cer |
PFX (PKCS#12), DER |
Oui, pour PFX |
Format de texte le plus courant, utilisé pour stocker les certificats et les clés sur Apache et Nginx. |
PFX (PKCS#12) |
.pfx, .p12 |
PEM, DER |
Non |
Format binaire pouvant contenir le certificat, la clé privée et la chaîne de certificats. Couramment utilisé sur Windows. |
DER |
.der, .cer |
PEM, PFX (PKCS#12) |
Non |
Format binaire souvent utilisé sur des plateformes Windows. Plus compact que le PEM. |
P7B (PKCS#7) |
.p7b |
PEM, DER |
Non |
Format sans clé privée, souvent utilisé pour transmettre une chaîne de certificats. |
Commandes pour convertir les certificats
Le script cert-convert.sh
permet de convertir les certificats en différents formats.
- easy_certif page
Exemple d’utilisation :
./cert-convert.sh -i certificat.pem -e p12 -o certificat_converti -k cle_privee.pem
Conversions courantes : - PEM vers P12 (PKCS#12) (requiert une clé privée) :
openssl pkcs12 -export -in certificat.pem -inkey cle_privee.pem -out certificat.p12
CRT vers PEM :
openssl x509 -in certificat.crt -out certificat.pem
Génération rapide de CSR avec des options avancées
Le script easy_certif.sh
permet de générer des CSR avec des options avancées comme les noms alternatifs (SAN) et des algorithmes de chiffrement personnalisés.
- easy_certif page
Exemple d’utilisation :
./easy_certif.sh -d example.com -s www -c Paris -l Ile-de-France -O 'My Organisation' --cipher rsa --keysize 2048 --digest sha512 -a www.example.net
Explication des options : - -d, –domain : Domaine pour le certificat (ex. : example.com). - -s, –server_name : Nom court du serveur (ex. : www). - –cipher : Algorithme (RSA ou EC). - –keysize : Taille de la clé (par ex. 2048 bits). - -a, –alternate_name : Noms alternatifs (SAN) pour le certificat.
Création et Gestion des Certificats SSL/TLS avec OpenSSL
Cette section couvre les commandes openssl pour la création et la gestion des certificats, adaptées pour être utilisées dans des scripts.
Générer une clé privée de 4096 bits avec chiffrement AES-256-CBC
openssl genpkey -algorithm RSA -aes256 -out number24CA.key -pkeyopt rsa_keygen_bits:4096
Créer un certificat racine auto-signé valable 10 ans
openssl req -x509 -new -key number24CA.key -sha256 -days 3650 -out number24CA.crt -subj "/C=FR/ST=Region/L=Ville/O=Organisation/OU=IT/CN=number24 CA"
Créer un CSR (Certificate Signing Request) avec une clé privée
openssl req -new -key number24CA.key -out number24CA.csr
Meta
Auteur : Cbillet Date : 11/11/2024