Created by potrace 1.13, written by Peter Selinger 2001-2015 image/svg+xml Site Yann
  • Archives
  • Documents
  • Aide

Générer des certificats SSL auto-signés avec mkcert

  • ssl
  •   4 mars  2022

Texte alternatif

mkcert est un outil facile d’utilisation qui va se charger de tout. Il génère notre autorité de certification, qui servira à signer le(s) certificat(s). Il suffira de déployer sa clé sur toutes les machines clientes pour que nous n’ayons aucune erreur du type “self signed…”

Installation de mkcert

sudo pacman -S mkcert                # archlinux

Pour installer mkcert sur un système Ubuntu ou Debian, il faut d’abord installer les dépendances de certutil :

sudo apt install wget libnss3-tools
curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest| grep browser_download_url  | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
mv mkcert-v*-linux-amd64 mkcert
chmod a+x mkcert
sudo mv mkcert /usr/local/bin/

Création autorité de certification CA

Le certificat sera généré dans un répertoire, que vous pouvez localiser avec la commande :

mkcert -CAROOT /home/lxcdeb/.local/share/mkcert

Ensuite une simple commande va générer notre nouvelle autorité de certification, sans saisir une seule information.

mkcert -install

Affichons le contenu :

ls -l /home/lxcdeb/.local/share/mkcert
total 8
-r-------- 1 lxcdeb lxcdeb 2488 mars   4 10:39 rootCA-key.pem
-rw-r--r-- 1 lxcdeb lxcdeb 1635 mars   4 10:39 rootCA.pem

Vérification AC

openssl x509 -noout -text -in ~/.local/share/mkcert/rootCA.pem 
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            b9:bc:8f:2f:26:66:83:38:5e:9e:c8:a2:c2:76:6d:c3
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: O = mkcert development CA, OU = lxcdeb@lxcbuster, CN = mkcert lxcdeb@lxcbuster
        Validity
            Not Before: Mar  4 09:39:52 2022 GMT
            Not After : Mar  4 09:39:52 2032 GMT
        Subject: O = mkcert development CA, OU = lxcdeb@lxcbuster, CN = mkcert lxcdeb@lxcbuster
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (3072 bit)

Génération d’un certificat

Maintenant que nous avons notre CA, nous allons générer notre certificat.

mkcert 'lxcdeb.local' localhost 127.0.0.1 ::1
Created a new certificate valid for the following names 📜
 - "lxcdeb.local"
 - "localhost"
 - "127.0.0.1"
 - "::1"

The certificate is at "./lxcdeb.local+3.pem" and the key at "./lxcdeb.local+3-key.pem" ✅

It will expire on 4 June 2024 

Le certificat se retrouve dans le dossier où vous avez exécuté la commande mkcert. On se retrouve avec deux fichiers :

ls -l lxcdeb.local*
-rw------- 1 lxcdeb lxcdeb 1704 mars   4 10:44 lxcdeb.local+3-key.pem   # ssl_certificate_key
-rw-r--r-- 1 lxcdeb lxcdeb 1517 mars   4 10:44 lxcdeb.local+3.pem       # ssl_certificate

Test de la clé

On va simplement installer nginx, sur notre machine et le configurer avec notre clé (remplacer les noms des fichiers du certificat avec les vôtres)

sudo su
apt install -y nginx
cp lxcdeb.local+3.pem /etc/ssl/certs
cp lxcdeb.local+3-key.pem /etc/ssl/private

cat <<EOF >>/etc/nginx/conf.d/lxcdeb.local.conf
server {
  listen  80;
  server_name lxcdeb.local;
  return 301 https://$server_name$request_uri;
  root /var/www/html;
}
server {
  listen *:443 ssl http2;
  server_name lxcdeb.local;
  ssl_certificate /etc/ssl/certs/lxcdeb.local+3.pem;
  ssl_certificate_key /etc/ssl/private/lxcdeb.local+3-key.pem;
  root /var/www/html;
}
EOF

echo «127.0.0.1 lxcdeb.local» >> /etc/hosts
echo Test >> /var/www/html/test.html

On teste :

curl https://lxcdeb.local/test.html
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Normal, nous n’avons pas ajouté d’autorité de certifications.

Diffuser sa chaîne d’authentification

Installation de la clé de l’autorité de certification sur toutes les machines

Sur les machines de type Archlinux

sudo cp ~/.local/share/mkcert/rootCA.pem /etc/ca-certificates/trust-source/anchors/rootCA.crt
# Faites de même avec tous les fichiers /etc/ssl/certs/*.pem ajoutés manuellement et renommez-les en *.crt
sudo  trust extract-compat

Sur les machines de type Debian

sudo cp ~/.local/share/mkcert/rootCA.pem /usr/local/share/ca-certificates/rootCA.crt
sudo apt install -y ca-certificates
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

Sur les machines de type Redhat

sudo cp ~/.local/share/mkcert/rootCA.pem /etc/pki/ca-trust/source/anchors/rootCA.crt
sudo dnf install -y ca-certificates
sudo update-ca-trust

On teste :

curl https://lxcdeb.local
Test
PRÉCÉDENTComment installer KVM sur un serveur Debian
SUIVANTChiffrement complet du disque Linux LUKS et déchifrer avec GPG et une carte à puce
Recherche