Générer un certificat serveur et client auto-signé avec OpenSSL

Il s’agit du guide définitif pour créer des certificats sécurisés, aussi bien pour les serveurs que pour les clients, avec OpenSSL.

Procédure

Sous Windows, il est recommandé d'utiliser Chocolatey pour installer OpenSSL et ses dépendances. La ligne de commande est simplement `choco install openssl`.

Autorité de certification racine (AC racine)

  1. Générer la clé privée AC racine à l’aide de la ligne de commande suivante :openssl ecparam -name prime256v1 -genkey -noout -out ca.key. Chaque certificat doit disposer d’une clé privée correspondante.

  2. Générer le certificat de l'AC racine (autorité de certification) à l'aide de la ligne de commande suivante : openssl req -new -x509 -sha256 -key ca.key -out ca.crt.

  3. Saisir les informations concernant l'AC racine (le certificat sera généré dans le fichier ca.crt) :

    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:CA
    Locality Name (eg, city) []:Toontown
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Acme inc.
    Organizational Unit Name (eg, section) []:Security
    Common Name (e.g. server FQDN or your name) []:acme.com
    Email Address []:security@acme.com
    
  4. Installer le certificat.

Noter que le certificat doit être installé sur le serveur et sur tous les clients afin de valider la légitimité des certificats émis. Certains navigateurs présentent également des particularités qui sont décrites dans la rubrique.

Certificat serveur

Effectuer ces étapes sur chaque serveur ou appareil pour lequel demander un certificat. Installer OpenSSL s’il n’est pas présent. L’alternative consiste à déployer de façon sécurisée la clé privée sur le serveur de destination en même temps que le certificat. Recommander d’utiliser cette dernière approche uniquement si devoir respecter des déploiements scriptés pour suivre les pratiques CloudOps/DevOps.

  1. Générer la clé privée du certificat serveur à l’aide de la ligne de commande suivante : openssl ecparam -name prime256v1 -genkey -noout -out server.key (clé privée 256 bits dans le fichier server.key). Chaque certificat doit disposer d’une clé privée correspondante.

  2. Générer la demande de signature de certificat serveur (CSR) à l’aide de la commande suivante : openssl req -new -sha256 -key server.key -out server.csr. Cette demande sera ensuite traitée sur le serveur AC racine.

  3. Saisir les informations concernant le certificat serveur (indiquer exactement le FQDN utilisé par le serveur). Par exemple :

    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:CA
    Locality Name (eg, city) []:Toontown
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Acme inc.
    Organizational Unit Name (eg, section) []:Security
    Common Name (e.g. server FQDN or your name) []:vault.acme.com
    Email Address []:security@acme.com
    
  4. Saisir un mot de passe dans l'invite, utiliser un gestionnaire de mots de passe ainsi qu'un générateur de mot de passe fort est essentiel.

  5. Transférer le fichier server.csr à l'AC racine.

  6. Traiter la demande en suivant les instructions ci-dessous.

  7. Déployer le certificat.

Certificat client

Suivre la même procédure que pour le certificat serveur, mais adapter deux attributs des informations saisies selon vos besoins, à savoir le Common Name et l’Email Address.

Common Name (e.g. server FQDN or your name) []:John Doe
Email Address []:JohnDoe@acme.com

Traiter une demande de signature de certificat (CSR) sur l'autorité de certification racine (AC racine)

Traiter la demande CSR en générant un certificat.

Générer ceci avec la ligne de commande suivante, où le fichier server.csr a été généré sur le serveur : openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1000 -sha256

Cela a pour résultat que le certificat est généré dans le fichier server.crt. Déployer ce dernier sur le serveur où la demande CSR a été générée.

Devolutions Forum logo Partagez vos commentaires