21 exemples OpenSSL pour vous aider dans le monde réel



Manipulation des certificats SSL avec OpenSSL : Création, gestion et conversion

OpenSSL est un outil de ligne de commande largement utilisé pour la création, la conversion et la gestion des certificats SSL. Sa polyvalence en fait une ressource indispensable pour les administrateurs de systèmes et les développeurs web.

Que vous ayez besoin de générer une nouvelle clé, de convertir un format de certificat ou de vérifier les détails d’un certificat existant, OpenSSL offre une large gamme de fonctionnalités. Cet article rassemble les commandes les plus fréquemment utilisées pour simplifier vos tâches quotidiennes.

Nous allons explorer ensemble les commandes OpenSSL les plus utiles pour diverses opérations liées aux certificats dans un environnement pratique.

Voici un bref rappel des acronymes couramment rencontrés dans le monde des certificats :

  • SSL – Secure Sockets Layer (Couche de sockets sécurisée)
  • CSR – Certificate Signing Request (Demande de signature de certificat)
  • TLS – Transport Layer Security (Sécurité de la couche de transport)
  • PEM – Privacy Enhanced Mail (Courrier amélioré de confidentialité)
  • DER – Distinguished Encoding Rules (Règles de codage distinctes)
  • SHA – Secure Hash Algorithm (Algorithme de hachage sécurisé)
  • PKCS – Public-Key Cryptography Standards (Normes de cryptographie à clé publique)

Remarque : Si vous n’êtes pas familier avec ces termes, une formation sur le fonctionnement de SSL/TLS pourrait être bénéfique.

Génération d’une nouvelle clé privée et d’une demande de signature de certificat

openssl req -out toptips.fr.csr -newkey rsa:2048 -nodes -keyout toptips.fr.key

Cette commande permet de créer à la fois un fichier CSR (Certificate Signing Request) et une clé RSA de 2048 bits. Si vous envisagez d’utiliser ce certificat sur un serveur Apache ou Nginx, le fichier CSR doit être soumis à une autorité de certification (CA). Cette dernière vous fournira un certificat signé, généralement aux formats DER ou PEM, qu’il faudra ensuite configurer sur votre serveur.

Création d’un certificat auto-signé

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Cette commande génère un certificat auto-signé et un fichier de clé utilisant un algorithme RSA de 2048 bits. L’option sha256 est incluse car elle est actuellement considérée comme la plus sûre.

Astuce : Par défaut, un certificat auto-signé est valide pendant un mois. Il est donc recommandé d’utiliser le paramètre -days pour étendre cette période.

Exemple : Certificat auto-signé valide pendant deux ans :

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Vérification d’un fichier CSR

openssl req -noout -text -in toptips.fr.csr

La vérification est essentielle pour s’assurer que le CSR envoyé à l’autorité de certification contient les informations nécessaires.

Création d’une clé privée RSA

openssl genrsa -out private.key 2048

Si vous devez uniquement générer une clé privée RSA, cette commande vous sera utile. L’argument 2048 assure un cryptage plus robuste.

Suppression de la phrase de passe d’une clé

openssl rsa -in certkey.key -out nopassphrase.key

Si votre clé privée est protégée par une phrase de passe, Apache vous demandera de la saisir à chaque redémarrage. Si cette opération devient fastidieuse, cette commande permet de supprimer la phrase de passe de la clé, afin d’éviter cette saisie répétée.

Vérification d’une clé privée

openssl rsa -in certkey.key -check

En cas de doute sur l’intégrité de votre fichier de clé, cette commande effectue une vérification.

Vérification d’un fichier de certificat

openssl x509 -in certfile.pem -text -noout

Pour examiner les informations d’un certificat (CN, OU, etc.), cette commande vous donnera tous les détails nécessaires.

Identification de l’autorité de certification

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Chaque certificat est signé par une autorité de certification. Cette commande permet d’identifier celle qui a émis le certificat.

Calcul de la valeur de hachage d’un certificat

openssl x509 -noout -hash -in bestflare.pem

Conversion du format DER au format PEM

openssl x509 -inform der -in sslcert.der -out sslcert.pem

Les autorités de certification fournissent souvent les certificats au format DER. Pour une utilisation avec Apache ou dans un environnement .pem, cette commande est indispensable.

Conversion du format PEM au format DER

openssl x509 -outform der -in sslcert.pem -out sslcert.der

Cette commande permet d’effectuer la conversion inverse : de PEM à DER.

Conversion du certificat et de la clé privée au format PKCS#12

openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.pem

Si vous devez utiliser un certificat avec une application Java ou tout autre système qui nécessite le format PKCS#12, cette commande crée un fichier pfx unique contenant à la fois le certificat et la clé.

Conseil : Vous pouvez inclure le certificat de la chaîne en spécifiant l’option -chain :

openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.pem -chain cacert.pem

Création d’un CSR avec une clé privée existante

openssl req -out certificate.csr -key existing.key -new

Si vous ne souhaitez pas créer une nouvelle clé privée et utiliser une clé existante, cette commande est la solution.

Affichage du contenu d’un certificat au format PKCS12

openssl pkcs12 -info -nodes -in cert.p12

Le format PKCS12 étant un format binaire, son contenu ne peut pas être visualisé directement avec un éditeur de texte. Cette commande permet d’afficher les informations contenues dans le fichier PKCS12.

Conversion du format PKCS12 au format PEM

openssl pkcs12 -in cert.p12 -out cert.pem

Pour utiliser un fichier au format pkcs12 avec Apache ou simplement en format pem, cette commande est indispensable.

Test du certificat SSL d’une URL spécifique

openssl s_client -connect yoururl.com:443 -showcerts

Cette commande est très pratique pour valider le certificat SSL d’une URL depuis un serveur, en vérifiant les détails du protocole, du chiffrement et du certificat.

Détermination de la version d’OpenSSL

openssl version

Pour tout responsable de la sécurité OpenSSL, la première étape consiste à vérifier la version du logiciel.

Vérification de la date d’expiration d’un certificat PEM

openssl x509 -noout -in certificate.pem -dates

Cette commande est utile pour mettre en place une surveillance de la validité des certificats. Les dates de début et de fin de validité (notBefore et notAfter) sont affichées. Il est important de surveiller notAfter pour anticiper l’expiration d’un certificat.

Exemple:

[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[[email protected] opt]#

Vérification de la date d’expiration d’un certificat SSL via une URL

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate

Cette commande est utile pour surveiller à distance la date d’expiration du certificat SSL d’une URL spécifique.

Exemple :

[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

Vérification de l’acceptation des protocoles SSL V2 ou V3 sur une URL

Pour vérifier SSL V2

openssl s_client -connect secureurl.com:443 -ssl2

Pour vérifier SSL V3

openssl s_client -connect secureurl.com:443 -ssl3

Pour vérifier TLS 1.0

openssl s_client -connect secureurl.com:443 -tls1

Pour vérifier TLS 1.1

openssl s_client -connect secureurl.com:443 -tls1_1

Pour vérifier TLS 1.2

openssl s_client -connect secureurl.com:443 -tls1_2

Si vous gérez un serveur web et souhaitez vérifier si les protocoles SSL V2 ou V3 sont activés, ces commandes sont essentielles. Si le protocole est activé, vous obtiendrez le message « CONNECTÉ », sinon, vous recevrez le message « échec de la poignée de main ».

Vérification de l’acceptation d’un chiffrement spécifique sur une URL

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Si vos résultats de tests de sécurité indiquent que des chiffrements faibles sont acceptés, cette commande vous permet de vérifier rapidement si c’est le cas.

Il faut bien sûr remplacer le chiffrement et l’URL par ceux que vous voulez tester. Si le chiffrement est accepté, vous obtiendrez le message « CONNECTÉ », sinon « échec de la poignée de main ».

J’espère que cet article vous a aidé à mieux comprendre comment utiliser OpenSSL pour gérer les certificats SSL de votre site web.