OpenSSL
OpenSSL permet la manipulation des certificats. Voici les commandes les plus communes.
Création de certificat
Générer une nouvelle demande de certification et faire une nouvelle clé privé.
openssl req -out CSR.csr -new -newkey rsa:2048 -sha256 -nodes -keyout privateKey.key
Créer un nouveau certificat autosigné.
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
Générer une demande de certificat pour une clé existante.
openssl req -out CSR.csr -key privateKey.key -sha256 -new
Générer une nouvelle demande de certification basé sur l'ancienne.
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
Retirer le mot de passe d'une clé.
openssl rsa -in privateKey.pem -out newPrivateKey.pem
Vérification des certificats
Vérifier une requette de certification.
openssl req -text -noout -verify -in CSR.csr
Vérifier une clé privé.
openssl rsa -in privateKey.key -check
Vérifier un certificat.
openssl x509 -in certificate.crt -text -noout
Vérifier un fichier PKCS#12
openssl pkcs12 -info -in keyStore.p12
Vérifier qu'une clé privé et un certificat vont ensembles. Il faut vérifier que les deux commandes ci-dessous retourne le même modulus.
openssl rsa -in mykey.pem -noout -modulus openssl x509 -in mycertificate.pem -noout -modulus
Debug d'une connexion
Pour afficher les certificats d'une connexion.
openssl s_client -showcerts -connect exemple.com:443 </dev/null
Afficher les données d'une certificat.
openssl s_client -showcerts -connect exemple.com:443 </dev/null | openssl x509 -noout -text
Afficher les informations du sujet et dates de validité.
openssl s_client -showcerts -connect exemple.com:443 </dev/null | openssl x509 -noout -subject -dates
Conversions
Convertir un fichier DER (.crt .cer .der) en PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Convertir un fichier PEM en DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Convertir un fichier PKCS#12 (.pfx .p12) contenant une clé et un certificat en PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
-nocerts
pour exporter uniquement la clé privé ou ajouter -nokeys
pour exporter uniquement le certificat.
Convertir un fichier PEM et une clé en un fichier PKCS#12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt