Ceci est le guide définitif pour créer des certificats sécurisés, tant pour les serveurs que pour les clients, en utilisant OpenSSL.
Procédure
Sur Windows, il est recommandé d'utiliser Chocolatey pour installer OpenSSL et ses dépendances. La ligne de commande est simplement `choco install openssl`.
- Créer l'Autorité de Certification Racine (AC)
- Générer une Demande de Signature de Certificat (CSR) – Serveur
- Générer une Demande de Signature de Certificat (CSR) – Client
- Traiter une Request de Signature de Certificat (CSR) sur l'Autorité de Certification (CA) Racine
Autorité de certification racine (AC)
- Générer la Clé Privée de l'Autorité de Certification Racine en utilisant la ligne de commande suivante :
openssl ecparam -name prime256v1 -genkey -noout -out ca.key
. Chaque certificat doit avoir une clé privée correspondante. - Générer le Certificat CA Racine (Autorité de Certification) en utilisant la ligne de commande suivante :
openssl req -new -x509 -sha256 -key ca.key -out ca.crt
. - Entrer les informations concernant l'AC (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
- Installer le certificat.
Notez que le certificat doit être installé sur le serveur et sur tous les clients pour valider la légitimité des certificats émis. Certains navigateurs ont également des particularités qui sont décrites dans la rubrique.
Certificat de serveur
Ces étapes sont généralement effectuées sur chaque serveur ou appareil pour lequel vous souhaitez demander un certificat. Installer OpenSSL s'il n'est pas présent. L'alternative est de déployer en toute sécurité la clé privée sur le serveur de destination en même temps que le certificat. Il est recommandé d'utiliser cette dernière approche uniquement si vous devez adhérer à des déploiements scriptés pour suivre les pratiques CloudOps/DevOps.
- Générer la Clé Privée du Certificat Serveur en utilisant la ligne de commande suivante :
openssl ecparam -name prime256v1 -genkey -noout -out server.key
(clé privée de 256bit dans le fichier server.key). Chaque certificat doit avoir une clé privée correspondante. - Générer la Request de Signature de Certificat du serveur (CSR) en utilisant la ligne de commande suivante :
openssl req -new -sha256 -key server.key -out server.csr
. Cette demande sera ensuite traitée sur le serveur d'autorité de certification racine. - Entrer les informations concernant le certificat serveur (le FQDN exact utilisé par le serveur doit être spécifié). 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
- Entrer un mot de passe à l'invite, utiliser un gestionnaire de mots de passe ainsi qu'un générateur de mots de passe forts est essentiel.
- Transférer le fichier server.csr à l'AC racine.
- Traiter la request en suivant les instructions ci-dessous.
- Déployer le certificat.
Certificat client
Suivre la même procédure que pour le certificat serveur, mais il faut adapter deux attributs de l'information que vous saisissez à vos besoins, à savoir le Nom Commun et l'Adresse Email.
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 (CA)
Traiter le CSR en générant un certificat.
Le générer en utilisant la ligne de commande suivante, où le 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 entraîne la génération du certificat dans le fichier server.crt. Il faut le déployer sur le serveur où le CSR a été généré.