How-to

SSL : Manipulations utiles et astuces avec openssl

openssl logo

navigation https

Voici un pense bête de quelques manipulations pouvant se révéler utiles lors de l’utilisation de certificat SSL et d’openssl :

 

Cas de figure : commande d’un certificat SSL auprès d’un fournisseur de certificat

Création du fichier de demande de certificat CSR (Certificat Signing Request) ainsi que de la clé privée (Private key) via openssl :

Voici la commande à saisir pour un certificat de 4096 bits en SHA2 (SHA 256 bits) :

openssl req -nodes -newkey rsa:4096 -sha256 -keyout ma_cle_privee_avec_mot_de_passe.key -out ma_demande_de_certificat.csr

Le processus va donc créer 2 fichiers :

  • la clé privée (protégée par un mot de passe) au format .key -> il faudra conserver ce fichier
  • la demande de certificat CSR au format .csr -> il faudra transmettre ce fichier au fournisseur pour qu’il puisse en retour générer le certificat SSL et nous le livrer.

Suivre le processus. Indiquer et confirmer un mot de passe pour la clé privée.

Générer ensuite le CSR en renseignant les champs demandés (Pays, Ville, Nom de l’entité, et le plus important : le Common Name (CN) = nom FQDN du site par exemple www.monsite.com)

Conserver à l’abri la clé privée, et envoyer / uploader / copier-coller le contenu du fichier CSR auprès de votre fournisseur, qui vous remettra/livrera en retour le certificat.

Chez certain fournisseur, le contenu du fichier CSR et précisé lors de la commande/validation du devis :

Bonjour,

Veuillez trouver ci-joint le devis validé pour 1 an avec ci-dessous les informations pour générer le CSR

Merci

informations:
Country Name (2 letter code): FR
State or Province Name (full name): Paris
Locality Name (eg, city): Paris
Organization Name (eg, company): TOTO SARL
Organizational Unit Name (eg, section): TOTO BOUTIQUE CHAMPS ELYSEE
Email Address: [email protected]
Custom URL name: *.toto.com

 

Pour générer une clé privée à l’aide du chiffrage récent ECC (Ellyptical Curve Cryptography) au lieu de RSA, il va falloir exécuter les deux commandes suivantes pour générer d’abord votre clé privée ECC, puis ensuite votre demande CSR :

Génération de la clé privée ECC :

openssl ecparam -out private.key -name prime256v1 -genkey

Génération de la demande CSR :

openssl req -new -key private.key -out request.csr

 

Renouvellement d’un certificat déjà existant :

Pour renouveler un certificat qui arrive à expiration (ou révoqué pour raison de sécurité ou autre), il suffit généralement d’envoyer de nouveau le CSR si les informations sont identiques.

Pour générer de nouveau un fichier CSR avec une clé privée déjà existante :

openssl req -new -sha256 -key ma_cle_privee_avec_mot_de_passe.key -out ma_demande_de_certificat.csr

 

Commande utiles :

 

Retirer le mot de passe d’une clé privée :

Utile pour ne plus avoir besoin de saisir le mot de passe de la clé à chaque restart de apache / nginx :

openssl rsa -in privatekeywithpass.key -out privatekeywithoutpass.key

 

Fichier .pem :

Il s’agit de fichier contenant la clé privée, le certificat et éventuellement le ou les certificat(s) intermédiaire(s) dans le même fichier .pem

Le but est d’avoir tout les éléments du certificat dans un seul et unique fichier. Certain programmes comme pound réclame ce format.

Voici un exemple de .pem avec clé privée + certificat

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDg
MBQGCCqGSIb3DQMHBAgD1kGN4ZslJgSCBMi1xk9jhlPxPc
9g73NQbtqZwI+9X5OhpSg/2ALxlCCjbqvzgSu8gfFZ4yo+
A .... MANY LINES LIKE THAT ....
X0R+meOaudPTBxoSgCCM51poFgaqt4l6VlTN4FRpj+c/Wc
blK948UAda/bWVmZjXfY4Tztah0CuqlAldOQBzu8TwE7WD
H0ga/iLNvWYexG7FHLRiq5hTj0g9mUPEbeTXuPtOkTEb/0
GEs=
-----END ENCRYPTED PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAJC1HiIAZAiIMA0GCSqGSIb3Df
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVx
aWRnaXRzIFB0eSBMdGQwHhcNMTExMjMxMDg1OTQ0WhcNMT
A .... MANY LINES LIKE THAT ....
JjyzfN746vaInA1KxYEeI1Rx5KXY8zIdj6a7hhphpj2E04
C3Fayua4DRHyZOLmlvQ6tIChY0ClXXuefbmVSDeUHwc8Yu
B7xxt8BVc69rLeHV15A0qyx77CLSj3tCx2IUXVqRs5mlSb
vA==
-----END CERTIFICATE-----

Il suffit grossièrement de copier/coller le contenu des fichiers et le regrouper dans un nouveau fichier .pem

 

Tester / vérifier un certificat :

openssl s_client -connect www.facebook.com:443 -showcerts

 

Connaitre la date d’expiration / périodes de validité d’un certificat local ou distant en ligne de commande via openssl :

Pour connaitre la validité d’un certificat local :

openssl x509 -enddate -noout -in /etc/ldap/cacert.pem

Pour connaitre la validité d’un certificat distant :

echo | openssl s_client -connect www.monsite.com >/dev/null | openssl x509 -noout -dates

 

Cas de figure : création d’une autorité racine pour se générer des certificats auto signés :

Étape 1 : création de l’autorité

Génération d’une clé privée pour  l’autorité de certification (autosigné) :

openssl genrsa 4096 -sha256 > private-ca.key

Génération de l’autorité avec une validité de 100 ans :

openssl req -new -x509 -days 36500 -key private-ca.key > ca.crt

Étape 2 : création du certificat auto signé

Génération clé privée pour le certificat auto signé :

openssl genrsa 4096 -sha256 > private-autosigned.key

Génération de la demande CSR :

openssl req -new -key private-autosigned.key > www.monsite.com.csr

 

Étape 3 : signature du certificat par l’autorité et validité de 10 ans :

openssl x509 -req -days 3650 -in www.monsite.com.csr -out www.monsite.com.crt -CA ca.crt -CAkey private-ca.key -CAcreateserial -CAserial ca.srl

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.