OpenSSL : petit mémo
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>