Guide de la commande OpenSSL

Publié 27 août 2024

OpenSSL est un outil polyvalent pour générer des clés privées, créer des demandes de signature de certificat (CSR) et gérer les certificats SSL/TLS. Cet article expliquera comment identifier votre version d'OpenSSL, utiliser les commandes OpenSSL courantes et suivre les bonnes pratiques pour sécuriser vos clés et certificats.

Vérifier votre version OpenSSL

Identifier votre version OpenSSL avec les commandes OpenSSL

Identifier quelle version d'OpenSSL vous utilisez est une première étape importante lors de la préparation pour générer une clé privée ou une CSR. Votre version d'OpenSSL détermine quels algorithmes cryptographiques peuvent être utilisés lors de la génération des clés ainsi que quels protocoles sont pris en charge. Par exemple, OpenSSL version 1.0.1 était la première version à prendre en charge TLS 1.1 et TLS 1.2.

Utilisez la commande openssl version -a pour identifier quelle version d'OpenSSL vous utilisez. L'option -a affiche des informations complètes sur la version, notamment :

  • Le numéro de version et la date de sortie (par exemple OpenSSL 1.0.2g 1 Mar 2016)
  • Les options avec lesquelles la bibliothèque a été compilée
  • Le répertoire où sont stockés les certificats et les clés privées (OPENSSLDIR)

Voici un exemple de sortie de la commande openssl version -a :

OpenSSL 1.0.2g  1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx) 
compiler: cc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"

Connaître votre version d'OpenSSL est important pour déterminer quels algorithmes cryptographiques et protocoles sont pris en charge lors de la génération de clés et de CSR. La sortie fournit des détails clés comme le numéro de version, les options de compilation et le répertoire de stockage par défaut des certificats et des clés.

Commandes OpenSSL couramment utilisées

OpenSSL fournit de nombreuses commandes pour générer des clés privées, créer des CSR, installer des certificats SSL/TLS et identifier les informations des certificats. Voici quelques-unes des commandes OpenSSL les plus utilisées :

  • openssl genrsa : Génère une clé privée RSA. Exemple : openssl genrsa -out cleprivee.key 2048
  • openssl req : Crée une CSR ou un certificat auto-signé. Exemple : openssl req -new -key cleprivee.key -out csr.csr
  • openssl x509 : Affiche les informations du certificat, convertit les formats et signe les CSR. Exemple : openssl x509 -in cert.crt -text -noout
  • openssl pkcs12 : Convertit entre les formats PFX, PEM et DER. Exemple : openssl pkcs12 -export -out cert.pfx -inkey cleprivee.key -in cert.crt
  • openssl s_client : Établit une connexion sécurisée avec un serveur distant. Exemple : openssl s_client -connect exemple.com:443

Ces commandes vous permettent d'effectuer des tâches importantes comme générer des clés privées robustes, créer des CSR avec les informations nécessaires, installer et configurer des certificats SSL/TLS, et identifier les problèmes.

Structure des commandes OpenSSL et options

La plupart des commandes OpenSSL suivent une structure cohérente :

openssl commande [options] [arguments]
  • commande spécifie l'opération à effectuer, comme genrsa, req, ou x509.
  • [options] modifient le comportement de la commande. Les options commencent généralement par un tiret (-) et peuvent avoir une valeur.
  • [arguments] fournissent des informations supplémentaires nécessaires à la commande, comme les chemins des fichiers d'entrée et de sortie.

Voici quelques options couramment utilisées :

  • -in : Spécifie le chemin du fichier d'entrée.
  • -out : Spécifie le chemin du fichier de sortie.
  • -keyout : Spécifie le chemin pour écrire la nouvelle clé privée.
  • -pubout : Génère la clé publique d'une clé privée ou d'une CSR.
  • -text : Affiche le contenu d'un certificat en format texte brut.
  • -noout : Empêche l'affichage des données encodées du certificat.

Par exemple, la commande openssl x509 -in cert.crt -text -noout utilise la commande x509 pour afficher les informations du certificat en texte brut sans afficher les données encodées.

Apprendre ces structures de commandes OpenSSL et les options couramment utilisées vous aidera à utiliser efficacement OpenSSL pour vos besoins en matière de certificats SSL/TLS.

Générer des clés privées et des CSR avec OpenSSL

Choisir les options de génération de clés

Lors de la création d'une clé privée pour votre certificat SSL/TLS, vous devez choisir entre les algorithmes de clé RSA et ECDSA. RSA est largement pris en charge et recommandé pour la compatibilité. Vous devez également choisir une taille de clé d'au moins 2048 bits pour RSA ou 256 bits pour ECDSA. Des tailles de clé plus importantes offrent plus de sécurité mais peuvent affecter les performances.

Un autre choix consiste à utiliser ou non une phrase de passe pour chiffrer la clé privée. L'utilisation d'une phrase de passe ajoute une couche de sécurité supplémentaire, mais nécessite de la saisir chaque fois que la clé est utilisée. Les phrases de passe peuvent être utiles si la clé risque d'être exposée à un accès non autorisé.

Créer votre clé privée avec les commandes OpenSSL

Pour créer une clé privée RSA de 2048 bits, utilisez la commande :

openssl genrsa -out votredomaine.key 2048

Cela crée un fichier de clé privée nommé votredomaine.key au format PEM. Vous pouvez visualiser le contenu brut et encodé de la clé avec :

cat votredomaine.key

Ou la décoder pour voir les détails de la clé avec :

openssl rsa -text -in votredomaine.key -noout

Extraire votre clé publique de la clé privée

Le fichier de clé privée créé contient à la fois la clé privée et la clé publique. Si nécessaire, vous pouvez extraire uniquement la clé publique en utilisant :

openssl rsa -in votredomaine.key -pubout -out votredomaine_publique.key

Cela crée un fichier nommé votredomaine_publique.key contenant la clé publique au format PEM.

Créer votre CSR

Pour créer une demande de signature de certificat (CSR) en utilisant votre clé privée, utilisez :

openssl req -new -key votredomaine.key -out votredomaine.csr

Cela vous demandera de répondre à des questions sur votre entreprise et votre domaine à inclure dans la CSR. Vous pouvez également fournir tous les détails de la CSR dans la commande en utilisant l'option -subj :

openssl req -new -key votredomaine.key -out votredomaine.csr \
-subj "/C=FR/ST=Ile-de-France/L=Paris/O=Votre Entreprise/OU=IT/CN=votredomaine.com"

Vous pouvez également créer la clé privée et la CSR ensemble en une seule commande :

openssl req -newkey rsa:2048 -keyout votredomaine.key -out votredomaine.csr

Vérifier les informations de la CSR

Avant d'envoyer votre CSR à une autorité de certification (AC), vérifiez que les informations sont correctes avec :

openssl req -text -in votredomaine.csr -noout -verify

Cela affiche les détails de la CSR en texte brut. Si des informations sont incorrectes, vous devez créer une nouvelle CSR. Les détails erronés ne peuvent pas être modifiés sans créer une nouvelle CSR en raison de la signature numérique.

En connaissant ces options de génération de clés et ces commandes OpenSSL, vous pouvez créer des clés privées et des CSR robustes adaptées à vos besoins en matière de certificats SSL/TLS.

Gérer les certificats

Visualiser les informations du certificat

Après avoir reçu votre certificat SSL/TLS de l'autorité de certification (AC), vous devez vérifier que les détails du certificat correspondent à votre clé privée. Utilisez cette commande pour afficher le contenu de votre certificat :

openssl x509 -text -in votredomaine.crt -noout

Cela affiche les informations du certificat en texte brut sans les données encodées. Examinez la section "Subject Public Key Info" pour voir les détails de la clé publique. Assurez-vous qu'ils correspondent à la clé publique dans vos fichiers de CSR et de clé privée.

Vérifier que vos clés correspondent

Pour vérifier que la clé privée de votre certificat, la CSR et le certificat émis ont tous la même clé publique, vous pouvez extraire la clé publique de chaque fichier et générer un hachage. Si les hachages correspondent, les clés sont identiques.

Utilisez ces commandes pour obtenir le hachage de la clé publique pour chaque fichier :

openssl pkey -pubout -in votredomaine.key | openssl sha256
openssl req -pubkey -in votredomaine.csr -noout | openssl sha256 
openssl x509 -pubkey -in votredomaine.crt -noout | openssl sha256

Exécutez chaque commande séparément pour obtenir trois hachages. Si tous les hachages sont identiques, les clés publiques correspondent dans votre clé privée, votre CSR et votre certificat.

Si les hachages ne correspondent pas, cela signifie souvent que la CSR a été créée sur une machine différente de celle où le certificat est installé. Pour résoudre les problèmes de non-correspondance des clés, vous pouvez :

  • Déplacer la clé privée de la machine CSR vers la machine du certificat
  • Installer le certificat sur la machine qui possède la clé privée correspondante
  • Créer une nouvelle clé privée et une nouvelle CSR sur la machine qui utilisera le certificat

Convertir les formats de certificats

Par défaut, OpenSSL crée des clés privées et des CSR au format PEM. Mais vous devrez peut-être les convertir dans d'autres formats comme PKCS#12 ou DER pour certains systèmes.

Pour convertir un certificat PEM et une clé privée en un fichier PKCS#12 (.pfx ou .p12) pour le transfert :

openssl pkcs12 -export -name "votredomaine-digicert-(date d'expiration)" \
-out votredomaine.pfx -inkey votredomaine.key -in votredomaine.crt

Cela combine votre clé privée votredomaine.key et votre certificat votredomaine.crt dans un fichier votredomaine.pfx. L'option -name définit un nom convivial qui inclut le domaine et la date d'expiration. On vous demandera de saisir un mot de passe de chiffrement pour le fichier .pfx.

Pour convertir un fichier .pfx au format PEM, utilisez des commandes séparées pour la clé et le certificat :

openssl pkcs12 -in votredomaine.pfx -nocerts -out votredomaine.key -nodes
openssl pkcs12 -in votredomaine.pfx -nokeys -clcerts -out votredomaine.crt

La première commande extrait la clé privée et la seconde extrait le certificat. L'option -nodes supprime le chiffrement de la clé privée.

Pour convertir entre les formats PEM et DER, utilisez les commandes x509 et rsa avec les options -inform et -outform :

openssl x509 -inform PEM -in votredomaine.crt -outform DER -out votredomaine.der
openssl rsa -inform PEM -in votredomaine.key -outform DER -out votredomaine_cle.der

Ces commandes convertissent un certificat PEM en DER et une clé privée PEM en DER. Pour passer de DER à PEM, il suffit d'inverser les valeurs -inform et -outform.

En utilisant ces commandes OpenSSL pour visualiser, vérifier et convertir vos certificats et clés SSL/TLS, vous pouvez les gérer et les installer correctement sur vos serveurs comme Apache Tomcat ou IIS.

Lister les suites de chiffrement

Les suites de chiffrement sont des ensembles d'algorithmes utilisés pour sécuriser les connexions réseau avec SSL/TLS. Elles comprennent des algorithmes d'échange de clés, d'authentification, de chiffrement et de hachage. Pour voir quelles suites de chiffrement votre version d'OpenSSL prend en charge, utilisez la commande suivante :

openssl ciphers -v

Cela affiche les noms complets de chaque suite de chiffrement prise en charge. Les noms suivent un format comme :

Protocole-ÉchangeDeClés-Authentification-Chiffrement-Hachage

Par exemple, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 utilise :

  • Protocole TLS
  • Échange de clés ECDHE
  • Authentification RSA
  • Chiffrement AES-256 en mode GCM
  • Hachage SHA384

Connaître ces éléments de nommage peut vous aider à choisir des suites de chiffrement qui répondent à vos besoins en matière de sécurité, de compatibilité et de performance.

Créer et vérifier des hachages

Les hachages sont des empreintes uniques et de longueur fixe créées à partir de données. Ils aident à vérifier l'intégrité des fichiers et des messages. Utilisez les commandes OpenSSL pour créer des hachages de clés et de certificats :

openssl dgst -sha256 votredomaine.key
openssl dgst -sha256 votredomaine.csr 
openssl dgst -sha256 votredomaine.crt

Ces commandes créent des hachages SHA-256 de vos fichiers de clé privée, de CSR et de certificat. Vous pouvez remplacer sha256 par d'autres algorithmes de hachage comme md5, sha1, ou sha512.

Pour vérifier l'intégrité d'un fichier, hachez-le et comparez-le à une valeur de hachage connue comme correcte. S'ils correspondent, le fichier n'a pas été modifié. Cette méthode est souvent utilisée pour les téléchargements de fichiers afin de s'assurer qu'ils n'ont pas été endommagés ou modifiés.

En listant les suites de chiffrement prises en charge et en créant des hachagesde fichiers, vous pouvez mieux sécuriser et vérifier votre configuration SSL/TLS avec OpenSSL.

Débogage et dépannage

Problèmes courants OpenSSL et leurs solutions

Lorsque vous travaillez avec OpenSSL pour générer des clés, créer des CSR et installer des certificats SSL/TLS, vous pouvez rencontrer certains problèmes courants. Voici quelques problèmes et comment les résoudre :

  • Problèmes d'installation et de configuration des certificats : Vérifiez que les chemins des fichiers de certificats sont corrects dans la configuration de votre serveur web. Assurez-vous que le certificat et la clé privée sont dans les formats appropriés (PEM ou PKCS#12) requis par votre serveur.

  • Non-correspondance entre la clé privée et le certificat : Vérifiez que la clé privée utilisée pour générer la CSR correspond à celle utilisée lors de l'installation du certificat. Comparez les hachages des clés publiques dans les fichiers de clé privée, de CSR et de certificat. S'ils ne correspondent pas, régénérez la CSR avec la bonne clé privée.

  • Problèmes de permissions et de propriété des fichiers : Vérifiez que les fichiers de clé privée et de certificat ont les bonnes permissions et appartiennent au bon utilisateur pour que votre processus de serveur web puisse les lire. Par exemple, sous Linux, vous devrez peut-être définir les permissions avec chmod 400 votredomaine.key et la propriété avec chown www-data:www-data votredomaine.key.

  • Erreurs de commandes OpenSSL : Si vous obtenez des erreurs en exécutant des commandes OpenSSL, vérifiez la syntaxe, les options et les chemins de fichiers. Assurez-vous d'utiliser les bonnes commandes pour votre version d'OpenSSL et que les fichiers sont dans les bons formats.

Identifier les versions et configurations TLS

Il est important de vérifier que votre OpenSSL et votre serveur web sont configurés pour utiliser les dernières versions de TLS et des suites de chiffrement robustes. Voici comment vérifier :

  1. Vérifier la prise en charge des versions TLS de votre OpenSSL : Utilisez la commande s_client pour voir la version TLS utilisée pour une connexion :

    openssl s_client -connect votredomaine.com:443 -tls1_2
    

    Remplacez votredomaine.com par votre nom de domaine. L'option -tls1_2 teste une connexion TLS 1.2. Vous pouvez la changer en -tls1, -tls1_1, ou -tls1_3 pour tester d'autres versions. Une connexion réussie signifie que cette version de TLS est prise en charge.

  2. Vérifier la configuration TLS de votre serveur web : Vérifiez les paramètres SSL/TLS de votre serveur web pour vous assurer qu'il est configuré pour utiliser TLS 1.2 ou 1.3 et non les anciennes versions comme SSL 3.0 ou TLS 1.0. Par exemple, dans Apache, vous pourriez voir des paramètres comme :

    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5
    

    Cela désactive SSL 3.0, TLS 1.0 et TLS 1.1 tout en activant des suites de chiffrement de haute sécurité. Consultez la documentation de votre serveur web pour connaître les paramètres de configuration TLS appropriés.

  3. Utiliser des outils de test SSL/TLS : Des outils en ligne comme le SSL Labs Server Test peuvent vérifier la configuration SSL/TLS de votre serveur et trouver des problèmes avec le certificat, les versions de protocole ou les suites de chiffrement.

En identifiant et en résolvant ces problèmes courants d'OpenSSL et en vous assurant d'avoir une configuration TLS sécurisée, vous pouvez mieux déboguer et dépanner votre configuration SSL/TLS pour vos domaines.

Meilleures pratiques

Gérer de manière sécurisée les clés privées et les certificats

Les clés privées sont la base de votre sécurité SSL/TLS. Il est important de les générer, les stocker et les protéger correctement. Voici quelques bonnes pratiques :

  • Générer des clés privées d'au moins 2048 bits RSA ou 256 bits ECDSA pour une sécurité renforcée
  • Utiliser une phrase de passe pour chiffrer le fichier de clé privée pour une couche de protection supplémentaire
  • Stocker les clés privées dans un endroit sécurisé avec des contrôles d'accès stricts, comme un coffre-fort verrouillé ou un module de sécurité matériel (HSM) chiffré
  • Limiter l'accès aux clés privées aux seuls administrateurs qui en ont absolument besoin
  • Ne jamais partager les clés privées via des canaux non sécurisés comme l'e-mail ou la messagerie
  • Faire tourner et mettre à jour régulièrement les clés privées, surtout s'il y a le moindre risque de compromission

Les certificats SSL/TLS doivent également être gérés et déployés avec soin. Voici quelques lignes directrices :

  • Utiliser une autorité de certification (AC) fiable et de confiance pour émettre vos certificats
  • Choisir le bon type de certificat pour vos besoins, comme un certificat mono-domaine, multi-domaines ou wildcard
  • Transmettre de manière sécurisée la demande de signature de certificat (CSR) à l'AC, par exemple via un formulaire web chiffré ou un e-mail
  • Stocker les certificats dans un emplacement protégé, avec un accès limité pour les administrateurs
  • Installer et configurer correctement les certificats sur vos serveurs web, équilibreurs de charge et autres points de terminaison SSL/TLS
  • Suivre les dates d'expiration des certificats et les renouveler avant qu'ils n'expirent pour éviter les temps d'arrêt
  • Remplacer les certificats si la clé privée est compromise ou si le certificat doit être révoqué pour une raison quelconque

Maintenir OpenSSL à jour

Utiliser la dernière version d'OpenSSL est important pour obtenir les dernières corrections de sécurité, le support des protocoles et algorithmes les plus récents, et les nouvelles fonctionnalités. Les anciennes versions peuvent avoir des vulnérabilités connues que les attaquants peuvent exploiter.

Vérifiez votre version d'OpenSSL avec openssl version et comparez-la aux dernières versions sur le site web d'OpenSSL. Si vous n'êtes pas sur la dernière version, mettez-la à jour dès que possible.

Le processus de mise à jour dépend de votre système d'exploitation et de votre environnement :

  • Sur Linux, utilisez votre gestionnaire de paquets pour installer la dernière version d'OpenSSL. Par exemple, sur Ubuntu ou Debian :
    sudo apt update
    sudo apt install openssl
    
  • Sur Windows, téléchargez le dernier installateur ou les binaires OpenSSL depuis le site officiel ou un fournisseur tiers de confiance. Remplacez votre ancien répertoire OpenSSL par la nouvelle version.
  • Pour les langages de programmation et les frameworks comme Python, Ruby ou Node.js, mettez à jour la bibliothèque OpenSSL qu'ils utilisent. Cela peut nécessiter de mettre à jour le langage/framework lui-même ou toute bibliothèque d'encapsulation SSL/TLS.
  • Sur les serveurs web comme Apache ou Nginx, mettez à jour la version du serveur ou les modules OpenSSL pour obtenir la dernière version. Consultez la documentation du serveur pour des instructions de mise à jour spécifiques.

Après avoir mis à jour OpenSSL, assurez-vous de tester votre configuration SSL/TLS et vos certificats pour vous assurer que tout fonctionne toujours correctement. Des outils comme SSL Labs peuvent vous aider à identifier tout problème.

En suivant ces meilleures pratiques pour gérer de manière sécurisée les clés et les certificats et en maintenant OpenSSL à jour, vous pouvez mieux protéger votre configuration SSL/TLS et les données de vos utilisateurs.

Surveiller les certificats SSL

La surveillance de vos certificats SSL est une partie cruciale du maintien d'un site web sécurisé et fiable. Des certificats SSL expirés ou mal configurés peuvent entraîner des vulnérabilités de sécurité et une mauvaise expérience utilisateur.Uptimia propose un service de surveillance des certificats SSL qui vous aide à suivre la santé et la validité de vos certificats. Avec Uptimia, vous pouvez recevoir des alertes lorsqu'un certificat est sur le point d'expirer ou présente des problèmes techniques, tels que des noms de domaine non correspondants, des algorithmes de chiffrement faibles ou des chaînes de certificats invalides. En surveillant de manière proactive vos certificats SSL avec Uptimia, vous pouvez être sûr que votre site web reste sécurisé et accessible à vos utilisateurs.

Points clés à retenir

  • Utilisez la commande openssl version -a pour identifier votre version d'OpenSSL, les options de compilation et le répertoire de stockage par défaut des certificats et des clés
  • Les commandes OpenSSL courantes incluent genrsa pour générer des clés privées, req pour créer des CSR, x509 pour visualiser et convertir des certificats, pkcs12 pour convertir les formats, et s_client pour tester des connexions sécurisées
  • Lors de la génération de clés privées, choisissez entre les algorithmes RSA (recommandé) et ECDSA, utilisez une taille de clé d'au moins 2048 bits pour RSA ou 256 bits pour ECDSA, et envisagez d'utiliser une phrase de passe pour plus de sécurité
  • Utilisez les commandes OpenSSL pour visualiser les informations des certificats, vérifier la correspondance des clés, convertir entre les formats PEM, PKCS#12 et DER, lister les suites de chiffrement prises en charge et créer des hachages de fichiers
  • Suivez les meilleures pratiques comme générer des clés privées robustes, utiliser une AC de confiance, stocker et gérer de manière sécurisée les clés et les certificats, et maintenir OpenSSL à jour pour protéger votre configuration SSL/TLS