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.
Table des matières
- 1 19 exemples d’utilisation d’OpenSSL
- 1.1 Créer un CSR pour une demande de signature de clé privée et de certificat
- 1.2 Créer un certificat auto-signé
- 1.3 Vérifier le fichier CSR
- 1.4 Créer une clé privée (RSA, DSA, …)
- 1.5 Supprimer la phrase secrète de la clé
- 1.6 Vérifier la clé privée
- 1.7 Vérifier le fichier de certificat
- 1.8 Vérifier l’autorité de signature de certificat
- 1.9 Vérifier la valeur de hachage d’un certificat
- 1.10 Convertir DER au format PEM
- 1.11 Convertir PEM au format DER
- 1.12 Convertir le certificat et la clé privée au format PKCS#12 (.p12)
- 1.13 Créer un CSR à l’aide d’une clé privée existante
- 1.14 Vérifier le contenu du certificat de format PKCS#12 (.p12)
- 1.15 Convertir le format PKCS12 en certificat PEM
- 1.16 Vérifier la date d’expiration du certificat de fichier PEM
- 1.17 Vérifiez le hachage de la clé publique pour vérifier qu’il correspond à un CSR ou à une clé privée
- 1.18 Encoder un fichier en base64
- 1.19 Chiffrer un fichier en AES
- 1.20 Utiliser OpenSSL pour vérifier une connexion SSL/TLS
- 2 Liens
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 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 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