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, commegenrsa
,req
, oux509
.[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é avecchown 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 :
-
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. -
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.
-
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, ets_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