Publié le 10/15/2017, rédigé par Gaulthier LALLEMAND

OpenSSL

Comment insérer des attributs du Distinguished Name en ligne de commande dans un certificat SSL ?

Prérequis : notions de base en shell.

Je souhaite créer un certificat SSL en y insérant des informations sur ma société, de façon à pouvoir automatiser le processus de création. Il ne faut donc pas que openssl s'arrête en cours de traitement pour me poser des questions. Je vais donc tout d'abord créer une clef SSL, en m'arrêtant avant la génération de la CSR.

Contexte

Voici les informations que j'aimerais intégrer à la CSR :

Ma clef SSL se situe dans le fichier Entreprise_Serveur.key.

Je cherche à obtenir une CSR dans le fichier Entreprise_Serveur.csr.

Il existe trois méthodes pour ajouter ces informations à la CSR.

1) Par le prompt

C'est la méthode la plus simple. Je tape simplement la commande suivante :

openssl req -new -key Entreprise_Serveur.key \
                 -out Entreprise_Serveur.csr

Le prompt me demande alors de répondre à différentes questions afin de remplir les champs suivants :

Inconvénient majeur : impossible d'automatiser le processus !

2) Dans la ligne de commande

Cette méthode consiste à remplacer les questions du prompt par l'ajout de l'option -subj à la commande :

openssl req -new -key Entreprise_Serveur.key \
            -out Entreprise_Serveur.csr \
            -subj "/C=CA/ST=Quebec/L=Montreal/O=Entreprise/OU=Service Informatique/CN=*.mondomaine.ca/emailAddress=contact_cert@mondomaine.ca"

À noter :

3) Dans un fichier de configuration

Ici, il est question de créer un fichier de configuration dans lequel seront écrites les informations du DN :

nano -c conf_Entreprise.cnf

J'y insère alors ce contenu :

[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = CA
ST = Quebec
L = Montreal
O = Entreprise
OU = Service Informatique
CN = *.mondomaine.ca
emailAddress = contact_cert@mondomaine.ca

Puis je lance la création de la CSR :

openssl req -config conf_Entreprise.cnf \
            -new -key Entreprise_Serveur.key \
            -out Entreprise_Serveur.csr

Je peux vérifier que les informations de la CSR sont bien celles que j'ai mentionnées dans le fichier de configuration, en lisant le contenu en clair de la CSR.