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

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

  1. Copiez les fichiers de certificat (CRT) et de clé (KEY) dans le répertoire d’Apache.

  2. 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
    
  3. Rechargez Apache pour appliquer les changements :

    systemctl restart apache2  # (ou httpd selon la distribution)
    

Installation des certificats dans Nginx

  1. Placez les fichiers dans le répertoire de configuration de Nginx.

  2. 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;
    
  3. 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