Générer un certificat SSL autosigné avec OpenSSL

openssl

Aujourd’hui j’ai été amené à générer plusieurs certificats SSL autosignés.

Un certificat SSL permet d’utiliser un serveur HTTPS ou bien FTPS en mode sécurisé, ce qui assure le cryptage des données qui transite, limitant ainsi le risque de piratage ou de leak de data.

Il existe un certain nombre de sociétés qui vendent des certificats SSL vérifiés par des organismes de sécurité, mais ces certificats ne sont pas forcément bon marché.

Ils sont indispensables en production afin d’assurer la sécurité d’un serveur, mais en développement on peut se permettre de générer nous même des certificats SSL.

Ces certificats sont appelés “Certificat SSL autosigné” et il ne doivent servir qu’en développement et en test MAIS JAMAIS EN PRODUCTION.

Nous allons voir qu’il est facile de générer un certificat SSL autosigné avec OpenSSL.

Installation de OpenSSL

OpenSSL est un logiciel gratuit, disponible pour Windows et Linux. Il va nous permettre de générer autant de clés autosignées que l’on souhaite pour pas un sou.

OpenSSL est disponible en téléchargement ici.

Pensez à installer le Redistributable Microsoft 2008 si vous en avez besoin.

Une fois l’installation d’OpenSSL effectuée, il vous suffit de coller ce fichier openssl.cnf dans le répertoire “C:\OpenSSL-Win64”.

Ouvrez ensuite une console DOS en tant qu’Administrateur et saisissez la commande suivante:

SET OPENSSL_CONF="C:\OpenSSL-Win64\openssl.cnf"

L’installation et la configuration d’OpenSSL pour générer des certificats SSL autosignés est désormais finie.

Vous pouvez ouvrir une console DOS en mode Administrateur et vous placer dans le répertoire “C:\OpenSSL-Win64\bin”.

Générer une clé privée RSA

>C:\OpenSSL-Win64\bin\openssl.exe genrsa -out <KeyFile> <KeySize>

où:

  • KeyFile est le nom souhaité pour le fichier contenant la clé privé
  • KeySize est la longueur de clé souhaitée (1024, 2048 ou bien 4096)

Par exemple:

>C:\OpenSSL-Win64\bin\openssl.exe genrsa -out zem.key 2048

Générer une demande de signature

>C:\OpenSSL-Win64\bin\openssl.exe req -new -key <KeyFile> -out <RequestFile>

où:

  • KeyFile est le fichier contenant la clé privé généré précédemment
  • RequestFile est le nom souhaité pour le fichier de demande de signature

Par exemple:

>C:\OpenSSL-Win64\bin\openssl.exe req -new -key zem.key -out zem.csr

Il ne vous reste plus qu’à repondre aux différentes questions posées par OpenSSL.

Générer un certificat public autosigné

>C:\OpenSSL-Win64\bin\openssl.exe x509 -req -days 3650 -in <RequestFile> -signkey <KeyFile> -out <CertificateFile>

où:

  • KeyFile est le fichier contenant la clé privé généré précédemment
  • RequestFile est le fichier de demande de signature généré précédemment
  • CertificateFile est le nom souhaité pour le certificat public

Par exemple:

>C:\OpenSSL-Win64\bin\openssl.exe x509 -req -days 3650 -in zem.csr -signkey zem.key -out zem.crt

Générer un fichier PKCS#12

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in <CertificateFile> -inkey <KeyFile> -out <PKCSFile> -name "<DisplayName>"

où:

  • CertificateFile est le certificat public généré précédemment
  • KeyFile est le fichier contenant la clé privé généré précédemment
  • PKCSFile est le nom souhaité pour le fichier PKCS#12
  • DisplayName est le nom souhaité pour l’affichage dans les interfaces utilisateurs (comme dans le gestionnaire de certificats de Windows par exemple)

Par exemple:

>C:\OpenSSL-Win64\bin\openssl.exe pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -in zem.crt -inkey zem.key -out zem.pfx -name "ZeM"

Il ne vous reste plus qu’à récupérer le fichier PKCS12 généré pour l’utiliser dans un serveur FTPS ou HTTPS.

Vous pouvez également supprimer les fichiers .csr, .key et .crt.

Leave a Reply

Your email address will not be published. Required fields are marked *