Prérequis

  • Création d’un répertoire dédié
  • Création d’un fichier index.txt qui va contenir la trace de chaque certificat émis
  • Création d’un fichier serial qui indiquera le nombre de certificat émis
mkdir -p /etc/ssl/private
cd /etc/ssl/private
touch index.txt
echo '01' > serial

Création des fichiers/dossiers pour les prérequis

Génération de notre CA Root

Lorsque nous allons générer notre CA, openssl nous demandera un mot de passe. Ce mot de passe sera celui qui nous permettra de signer les certificats présents sous notre autorité de certification.

openssl genrsa -aes256 -out CA.key

Génération du CA

Génération d’un CSR pour notre certificat racine de notre CA

openssl req -new -nodes -key CA.key -out CA.csr -sha256

Génération du CSR

Signature de notre CSR avec notre clé privée

openssl x509 -req -days 365 -in CA.csr -out CA.crt -signkey CA.key

Signature de la clé

Création de notre fichier de configuration openssl.cnf pour signer nos demandes

inoteam_policy contiendra les éléments indispensables qui doivent être identiques avec la demande de signature CSR

[ ca ]
default_ca = inoteam_ca

[inoteam_ca]
# ROOT CA
certificate = CA.crt
private_key = CA.key
new_certs_dir = .
database = ./index.txt
serial = ./serial
default_md = sha512
default_days = 365
policy = inoteam_policy

[inoteam_policy]
countryName            = match
stateOrProvinceName    = match
organizationName       = match
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional

[ req ]
default_bits        = 2048
distinguished_name  = req_distinguished_name
string_mask         = utf8only
default_md          = sha512

Création de notre fichier de configuration openssl.cnf

Création de notre certificat pour notre serveur Web

Génération de la clé privée

mkdir -p /etc/ssl/private
cd /etc/ssl/private
openssl genrsa -out customCA-monsite.fr.key

Demande de signature pour le certificat du serveur Web

openssl req -new -nodes -out demo.fr.csr -newkey rsa:4096 -keyout customCA-monsite.fr.key -subj "/CN=demo.fr/C=FR/ST=France/L=Lille/O=Gaston Berger 🤓☝️"

Demande de signature

Création d’un fichier de configuration pour la demande de signature

cat > demo.fr.v3.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = demo.fr
DNS.2 = www.demo.fr
IP.1 = 192.168.192.129 # IP à modifier
EOF

Envoi du CSR et du ext sur VM-CA pour signer le certificat

scp demo.fr.* root@192.168.192.128:/etc/ssl/private

Envoi des fichiers sur VM-CA

Signature du CSR sur VM-CA

openssl x509 -req -in demo.fr.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out demo.fr.crt -days 730 -sha256 -extfile demo.fr.v3.ext

Signature du CSR

Envoi du fichier CRT sur VM-WEB

scp demo.fr.crt root@192.168.192.129:/etc/ssl/certs

Envoi du fichier crt

Configuration d’NGINX sur VM-WEB

  1. Création du fichier demo.conf dans /etc/nginx/conf.d/
server {
    listen 443 http2 ssl;
    server_name _;

    ssl_certificate     /etc/ssl/certs/demo.fr.crt;
    ssl_certificate_key /etc/ssl/private/customCA-monsite.fr.key;

    root                /usr/share/nginx/html;
    index               index.html;

    access_log          /var/log/nginx/demoaccess.log;
    error_log           /var/log/nginx/demoerrorlog;
}
  1. Changement des droits d’accès pour les fichiers demo.fr.crt et customCA-monsite.fr.key
chown nginx:nginx /etc/ssl/certs/demo.fr.crt
chown nginx:nginx /etc/ssl/private/customCA-monsite.fr.key
chmod 640 /etc/ssl/certs/demo.fr.crt
chmod 600 /etc/ssl/private/customCA-monsite.fr.key
  1. Ouverture des ports
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload
  1. Démarrage du service nginx
systemctl enable --now nginx

Ajout du certificat dans certlm (Windows)

  1. Ouvrir dans la console certlm en cherchant “Gérer les certificats d’ordinateur”

  2. Dérouler le menu “Autorités de certification racines de confiance” et faites un clique droit sur “Certificats” puis cliquez sur “Toutes les tâches” et sur “Importer”

Importer certificat avec certlm

  1. Choisissez “Ordinateur local” et cliquez sur “Suivant”

Assistant d’importation de certificat

  1. Sélectionnez votre certificat et cliquez sur “Suivant”

Choisir le certificat à ajouter au magasin

Après importation :

Test après installation du certificat