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
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 d’un CSR pour notre certificat racine de notre CA
openssl req -new -nodes -key CA.key -out CA.csr -sha256
Signature de notre CSR avec notre clé privée
openssl x509 -req -days 365 -in CA.csr -out CA.crt -signkey CA.key
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 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 🤓☝️"
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
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
Envoi du fichier CRT sur VM-WEB
scp demo.fr.crt root@192.168.192.129:/etc/ssl/certs
Configuration d’NGINX sur VM-WEB
- 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;
}
- Changement des droits d’accès pour les fichiers
demo.fr.crt
etcustomCA-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
- Ouverture des ports
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload
- Démarrage du service nginx
systemctl enable --now nginx
Ajout du certificat dans certlm (Windows)
Ouvrir dans la console
certlm
en cherchant “Gérer les certificats d’ordinateur”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”
- Choisissez “Ordinateur local” et cliquez sur “Suivant”
- Sélectionnez votre certificat et cliquez sur “Suivant”
Après importation :