Menu Fermer

19 exemples d’utilisation d’OpenSSL

OpenSSL est une librairie libre mais aussi un outil disponible dans la plupart des distributions Linux.
Il vous permet de générer un fichier CSR de demande signature de certificat, créer des clés privés, des certificats d’autorités auto-signés ou encore récupérer un certificat SSL distant et vérifier la connexion TLS.
Mais l’une des commandes SSL les plus populaires pour créer, convertir et gérer les certificats SSL est OpenSSL.

Dans ce tutoriel, je vous donne 19 exemples d’utilisation de la commande OpenSSL.

19 exemples d'utilisation d'OpenSSL

19 exemples d’utilisation d’OpenSSL

Avec OpenSSL, on manipule de nombreuses abréviations liés à des éléments de cryptographie.
Voici un lexique :

  • SSL  (Secure Socket Layer) – Couche de socket 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) – Messagerie à confidentialité améliorée
  • DER (Distinguished Encoding Rules) – Règles de codage distinguées
  • SHA (Secure Hash Algorithm) – Algorithme de hachage sécurisé
  • PKCS (Public-Key Cryptography Standards) – Normes de cryptographie à clé publique

A lire :

Créer un CSR pour une demande de signature de clé privée et de certificat

Lorsque l’on doit configurer un serveur WEB en HTTPS/SSL, il faut demander un certificat électronique auprès d’une autorité de certification.
Pour cela, il faut générer un CSR et un fichier de clé RSA de 2048 bits.
En retour, l’autorité de certification vous donne un certificat signé principalement au format der ou pem que vous devez configurer dans le serveur Web Apache ou Nginx.

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

Vous devez ensuite répondre à un questionnaire afin d’indiquer l’organisation, le CN, une phrase secrète (optionnel).

Créer un CSR pour une demande de signature de clé privée et de certificat

Créer un certificat auto-signé

Lorsque l’on ne souhaite pas passer par une autorité de certification, on peut générer un certificat auto-signé.
Voici comment générer un certificat auto-signé et un fichier de clé avec RSA 2048 bits :

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt

Le paramètre -days définit la validité du certificat en jours.

Par exemple pour mettre en place un certificat SSL sur Postfix, suivez ce tutoriel :

Vérifier le fichier CSR

Pour vérifier le fichier de demande de signature de certificat.

openssl req -noout -text -in CSR.csr

Créer une clé privée (RSA, DSA, …)

Pour créer une clé privée RSA 2048 bits. :

openssl genrsa -out private.key 2048

Ou pour générer une clé privée DSA 1024 bits :

openssl dsaparam -noout -out dsakey.pem -genkey 1024

Supprimer la phrase secrète de la clé

Lors de la génération de la clé, vous pouvez spécifier une phrase secrète (pass phrase).
Si vous êtes ennuyé par la saisie d’un mot de passe, vous pouvez utiliser la commande suivante pour supprimer la clé de phrase secrète d’une clé existante.

openssl rsa -in privateKey.pem -out newPrivateKey.pem

Vérifier la clé privée

Pour vérifier la validité d’une clé privée.

openssl rsa -in certkey.key -check

Si celle-ci est correcte, openssl retourne ok puis affiche la clé privée :

RSA key ok
writing RSA key

Vérifier le fichier de certificat

Pour afficher et vérifier la chaîne de certification au complet :

openssl x509 -in certfile.pem -text -noout
Vérifier le fichier de certificat électronique avec openssl

Vérifier l’autorité de signature de certificat

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

Par exemple :

openssl x509 -in wildcard_example_com.crt.pem -noout -issuer -issuer_hash
issuer=C = FR, ST = Paris, L = Paris, O = Gandi, CN = Gandi Standard SSL CA 2
8544bf03

Vérifier la valeur de hachage d’un certificat

openssl x509 -noout -hash -in bestflare.pem

Par exemple :

openssl x509 -noout -hash -in wildcard_example_com.crt.pem
e2b44565

Convertir DER au format PEM

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

Convertir PEM au format DER

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

Convertir le certificat et la clé privée au format PKCS#12 (.p12)

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

Créer un CSR à l’aide d’une clé privée existante

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

Vérifier le contenu du certificat de format PKCS#12 (.p12)

openssl pkcs12 –info -nodes –in cert.p12

Convertir le format PKCS12 en certificat PEM

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

Vérifier la date d’expiration du certificat de fichier PEM

openssl x509 -noout -in certificate.pem -dates

Vérifiez le hachage de la clé publique pour vérifier qu’il correspond à un CSR ou à une clé privée

Voici comment vérifier le hash d’un certificat.
Remplacez md5, par sha1, sha256 selon la fonction de hachage désirée.

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
openssl req -noout -modulus -in CSR.csr | openssl md5

Encoder un fichier en base64

Pour encoder le contenu d’un fichier en base64 :

openssl enc -base64 -in NomFichier.txt

Chiffrer un fichier en AES

Enfin voici la commande openssl pour chiffrer un fichier avec AES :

openssl enc -aes-256-cbc -pbkdf2 -in NomFichier.txt -out NomFichier.enc

Le mot de passe de chiffrement est demandé.
Ensuite pour déchiffrer un fichier en AES :

openssl enc -d -aes-256-cbc -in NomFichier.enc

Utiliser OpenSSL pour vérifier une connexion SSL/TLS