Skip to content

Quelques commandes OpenSSL sur la gestion des certificats

Posted in GNU/Linux

Dans cet article figurent, d’une part quelques commandes permettant de vérifier des informations relatives à des certificats (X509) et d’autre part les étapes et les commandes permettant de créer un certificat auto signé.

Tout d’abord voici quelques commandes utiles pour vérifier les versions d’algorithmes de signatures ou vérifier si on est vulnérable à la faille Poodle :

Voir le contenu d’un certificat :
openssl x509 -in carta.fr.crt -noout -text

Voir si les certificats SSL utilisent SHA1 ou 2 ou 256 :
openssl s_client -connect : < /dev/null 2>/dev/null | openssl x509 -text -in /dev/stdin | grep "Signature Algorithm"

Vérifier qu’un certificat est signé par une AC
openssl verify -verbose -CAFile ca.crt domain.crt

Vérifier si SSLv3 est actif sur votre serveur :
openssl s_client -connect domaine.tld:443 -ssl3

Pour désactiver SSLv3 sur Apache2, il faut modifier la conf du module ssl (sous Debian /etc/apache2/mods-available/ssl.conf) :
#Activer tous les protocoles sauf SSLv2 et SSLv3
SSLProtocol All -SSLv2 -SSLv3

Les commandes et principes pour créer son certificat :

1) Créer une clé privée :
openssl genrsa 1024 > macle.key
ou
openssl genrsa -out macle.key 2048

Si on veut protéger sa clé par un mot de passe on ajoute -des3. Attention Apache demandera le mot de passe à chaque démarrage, c’est donc plutôt déconseillé.

2) créer un fichier de demande de signature de certificat (CSR Certificate Signing Request).

– On génère la demande de certificat avec la commande suivante :
openssl req -new -key macle.key > demcertif.csr
ou
openssl req -out demcertif.csr -key macle.key -new -sha256

– On répond aux questions. Le fichier CSR contient la clé publique qui doit être signé par une AC ou par nous même (certificat auto signé).
Un less demcertif.csr permet de voir la clé.
Vous pouvez aussi vérifier la signature :
openssl req -in CSR.csr -noout -text
et vous devez obtenir:
Signature Algorithm: sha256WithRSAEncryption

3) Signer le certificat. Là on a deux choix :

• envoyer le fichier demcerif.csr à un organisme (le tiers de confiance ou l’autorité de certification (CA)) qui signera notre certificat avec sa clé privée avant de nous le renvoyer. Généralement cette solution est payante.
• ou bien signer nous-même le certificat.

=> Nous allons ici auto signer notre certificat.

A – Moi aussi je veux être une autorité de certification.Pour cela je crée la clé privée de mon AC (protégée par mdp car c’est avec elle qu’on signera nos certificats)

openssl genrsa -des3 1024 > monca.key

B – Je crée un certificat X509 de l’AC autosigné en utilisant la clé privé de mon AC (ici valable 10 ans – soyons fou)

openssl req -new -x509 -days 3650 -key monca.key > monca.crt

On répond aux questions.

C– Maintenant je signe la demande de certificat :

openssl x509 -req -in demcertif.csr -out moncertif.crt -CA monca.crt -CAkey monca.key -CAcreateserial -CAserial monca.srl -SHA256 -days 3650

Le certificat signé est le fichier “moncertif.crt”. Il est signé en SHA-256 (par défaut c’est du SHA-1). Il est valide pendant 10ans (yep je suis vraiment fou, dans 10 ans je vais me faire avoir).

5) Pour éviter les messages d’insultes, il faut installer le certificat de l’AC sur tous les postes clients ! (le fichier monca.crt)

4) Utiliser son certif avec Apache :

– Il faut d’abord copier le certificat “moncertif.crt” et la clé privé “macle.key” dans un répertoire accessible par apache. Par exemple dans /etc/apache2/ssl/monsite.tld
– Il faut ensuite activer le module ssl d’apache avec la commande a2enmod ssl
– Puis il faut modifier le virtualhost correspondant (par exemple dans /etc/apache2/site-available/monsite.tld) en y ajoutant les lignes suivantes :


ServerName ....
....
....
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/monsite.tld/moncertif.crt
SSLCertificateKeyFile /usr/local/apache2/ssl/monsite.tld/macle.key


Il est fortement déconseillé de mettre au même endroit la clé privé et le certificat (Doc Apache2)

– Bien sûr il faut redémarrer Apache 🙂