Comment créer des certificats auto-signés à l'aide d'OpenSSL
Comment créer des certificats auto-signés à l’aide d’OpenSSL
ATTENTION Article non finalisé. En cours de tests.
But
hdes guides étape par étape sur la façon de créer des certificats auto-signés à l’aide de l’utilitaire OpenSSL. Vous pouvez créer des certificats auto-signés à l’aide de commandes ou les automatiser à l’aide d’un script shell en suivant ce guide.
Openssl est un utilitaire pratique pour créer des certificats auto-signés.
Vous pouvez utiliser OpenSSL sur tous les systèmes d’exploitation tels que les versions Windows, MAC et Linux.
Qu’est-ce qu’un certificat auto-signé ?
Un certificat auto-signé est un certificat SSL/TSL non signé par une autorité de certification publique ou privée. Au lieu de cela, il est signé par le certificat d’autorité de certification personnel ou racine du créateur.
Voici ce que nous faisons pour demander un certificat SSL/TLS payant auprès d’une autorité de certification bien connue comme Verisign ou comodo.
1 Créez une demande de signature de certificat (CSR) avec une clé privée. Un CSR contient des détails sur l’emplacement, l’organisation et le FQDN (nom de domaine complet).
2 Envoyez le CSR à l’autorité CA de confiance.
3 L’autorité de certification vous enverra le certificat SSL signé par son autorité de certification racine et sa clé privée.
4 Vous pouvez ensuite valider et utiliser le certificat SSL avec vos applications.
Mais pour un certificat auto-signé, voici ce que nous faisons.
1 Créez notre propre certificat CA racine et votre clé privée CA (nous agissons en tant que CA par nous-mêmes)
2 Créer une clé privée de serveur pour générer CSR
3 Créez un certificat SSL avec CSR à l’aide de notre racine CA et de notre clé privée CA.
4 Installez le certificat CA dans le navigateur ou le système d’exploitation pour éviter les avertissements de sécurité.
1. Création de l’autorité de certification
Comme indiqué précédemment, nous devons créer notre propre certificat d’autorité de certification racine pour que les navigateurs fassent confiance au certificat auto-signé. Créons donc d’abord le certificat CA racine.
Créons un répertoire nommé openssl pour enregistrer toutes les clés et certificats générés.
mkdir openssl &&cd openssl
Exécutez la commande openssl suivante pour créer rootCA.key et rootCA.crt.
Remplacez breizhland.eu par votre nom de domaine ou votre adresse IP.
Nous utiliserons rootCA.key et rootCA.crt pour signer le certificat SSL.
2. Création de la clef privée du serveur
openssl genrsa -out server.key 2048
3. Création du CSR
Nous allons créer un fichier csr.conf pour avoir toutes les informations nécesssaires pour générer le CSR
Certaines informations seront à modifier en fonction de vos besoins, localisation,etc.
cat > csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
# Country Name (2 letter code) : Le code ISO à deux lettres du pays où l'entité est enregistrée
# (par exemple, "US" pour les États-Unis, "FR" pour la France, etc.).
C = FR
# State or Province Name : Le nom de l'État ou de la province où l'entité est enregistrée.
ST = Bretagne
# Locality Name : Le nom de la ville ou de la localité où l'entité est enregistrée.
L = Lorient
# Organization Name : Le nom de l'organisation (entité) pour laquelle le certificat est destiné (par exemple, "Breizhland").
O = Breizhland
# Organizational Unit Name : Le nom du service ou de l'unité organisationnelle (facultatif).
OU = Breizhland Dev
# Common Name : Le nom commun (CN) est le nom de domaine (ou l'adresse IP) pour lequel vous voulez obtenir le certificat.
# Si vous créez un certificat pour un site web, il s'agit généralement du nom de domaine (par exemple, "www.Breizhland.eu").
# Si vous créez un certificat pour un service interne, vous pouvez utiliser l'adresse IP de ce service.
CN = demo.Breizhland.int
# Email Address : L'adresse e-mail de contact pour l'entité (facultatif).
# Challenge Password : Mot de passe de challenge (facultatif). C'est rarement utilisé et généralement laissé vide.
# Optional Company Name : Nom de l'entreprise (facultatif).
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = demo.breizhland.int
DNS.2 = www.demo.Breizhland.int
IP.1 = 192.168.1.5
IP.2 = 192.168.1.6
EOF
4. Générer la CSR à partir de la clef privée du serveur
Lancer la commande suivante pour créer le fichier cert.conf pour le certificat SSL. Il faut remplacer demo.breizhland.int par votre domaine ou votre adresse ip.
6. Générer un certificat SSL avec la self signed CA
Lancer la commande suivante pour générer le certificat SSL qui est autosigné par les fichiers rootCA.crt et rootCA.cert créés comme partie de notre propre authorité de certification.
Si vous souhaitez créer des certificats auto-signés assez souvent, vous pouvez utiliser le script shell suivant. Il vous suffit d’exécuter le script avec le nom de domaine ou l’IP que vous souhaitez ajouter au certificat.
Enregistrez le script shell suivant sous ssl.sh
#! /bin/bash
if["$#" -ne 1]thenecho"Error: No domain name argument provided"echo"Usage: Provide a domain name as an argument"exit1fiDOMAIN=$1# Create root CA & Private keyopenssl req -x509 \
-sha256 -days 356\
-nodes \
-newkey rsa:2048 \
-subj "/CN=${DOMAIN}/C=FR/L=Lorient"\
-keyout rootCA.key -out rootCA.crt
# Generate Private key openssl genrsa -out ${DOMAIN}.key 2048# Create csf confcat > csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = FR
ST = Bretagne
L = Lorient
O = Breizhland
OU = Breizhland Dev
CN = ${DOMAIN}
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = ${DOMAIN}
DNS.2 = www.${DOMAIN}
IP.1 = 192.168.1.5
IP.2 = 192.168.1.6
EOF# create CSR request using private keyopenssl req -new -key ${DOMAIN}.key -out ${DOMAIN}.csr -config csr.conf
# Create a external config file for the certificatecat > cert.conf <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = ${DOMAIN}
EOF# Create SSl with self signed CAopenssl x509 -req \
-in ${DOMAIN}.csr \
-CA rootCA.crt -CAkey rootCA.key \
-CAcreateserial -out ${DOMAIN}.crt \
-days 365\
-sha256 -extfile cert.conf
Rendre le script executable
chmod +x ssl.sh
Ensuite, il suffit d’executer le script en lui passant en paramêtre soit le nom de domaine ou l’adresse ip
./ssl.sh demo.Breizhland.int
Le script créera tous les certificats et clés que nous avons créés à l’aide des commandes individuelles.
Le certificat SSL et les clés privées sont nommés avec le nom de domaine que vous transmettez comme argument de script.
Par exemple, demo.Breizhland.int.key & demo.Breizhland.int.crt