OpenSSL : petit mémo

Billet posté le 2 févr. 2020

OpenSSL ?

Tout le monde connaît OpenSSL, sauf que pour ma part je trouve les commandes souvent longues et très souvent difficilement compréhensible. L’objet de cet article ce n’est clairement pas d’être un expert en OpenSSL, je ne suis pas expert en sécurité informatique. Mon objectif est de partager avec vous quelques commandes que j’utilise régulièrement.

Petit mémo

Connaître la version d’OpenSSL :

openssl version

Générer un certificat auto signé :

openssl req -newkey rsa:2048 -nodes -keyout <file.key> -x509 -days 365 -out <file.pem>

Générer un CSR pour un certificat commercial :

openssl req -nodes -newkey rsa:2048 -keyout <file.key> -out <commercial.csr>

Lire le contenu d’un fichier CSR (Certificate Signing Request) :

openssl req -text -noout -verify -in <file.csr>

Lire le contenu d’un fichier CRT :

openssl x509 -in <file.crt> -text -noout

Vérifier une clé privée :

openssl rsa -in <file.key> -check

Vérifier que le certificat, la clé privée et le CSR correspondent :

openssl x509 -noout -modulus -in <file.crt> | openssl md5
openssl rsa -noout -modulus -in <file.key> | openssl md5
openssl req -noout -modulus -in <file.csr> | openssl md5

Si les trois sommes MD5 sont identiques alors le triplet certificat, clé privée et CSR correspondent. Le cas échant il faut bien vérifier si ce sont les bons fichiers que vous avez en votre possession.

Regarder qui est l’issuer d’une autorité de certification :

openssl x509 -in <file.pem> -noout -issuer -issuer_hash

Regarder la date d’expiration d’un certificat en production :

openssl s_client -connect webmail.lovetux.net:443 2>/dev/null | openssl x509 -noout -subject -dates

Il arrive qu’une clé privée soit protégée par un mot de passe, il est alors possible de supprimer cette protection par la commande suivante :

openssl rsa -in <file1.key> -out <file2.key>

Vous disposez d’un fichier PKCS#12 et vous souhaitez obtenir le certificat :

openssl pkcs12 -in <file.p12> -out <file.pem> -nodes

Se connecter à un serveur web en HTTPS :

openssl s_client -connect www.feistyduck.com:443

Se connecter à un serveur IMAPS :

openssl s_client -connect <serveur>:993 -crlf

Se connecter sur un serveur SMTP + TLS :

openssl s_client -starttls smtp -crlf -CAfile /etc/ssl/certs/ca-certificates.crt -connect <serveur>:25

Se connecter sur un serveur SMTPS :

openssl s_client -crlf -connect <serveur>:465

Se connecter sur un serveur SUBMISSION :

   
openssl s_client -quiet -starttls smtp -connect <serveur>:587

Chiffrer un fichier :

openssl enc -aes-256-cbc -pbkdf2 -in <file_clear_text.txt> -out <file_encrypted.txt>

Déchiffrer un fichier :

openssl enc -aes-256-cbc -d -pbkdf2 -in <file_encrypted.txt> -out <file_clear_text.txt>

Générer un mot de passe aléatoire et fort (Merci Nathanaelle !) :

openssl rand -base64 <longueur>