Lors de la réalisation de maquette, j’ai souvent la nécessité de générer des certificats SSL publics. Généralement, j’utilise la PKI Let’S Encrypt et l’utilitaire Certbot lancé depuis une machine WSL.
L’installation de WSL2 est documentée dans le KB Microsoft suivant :
Dans ce post, la distibution utilisée est “Ubuntu 20.04”.
Sommaire
Mise à jour de la distribution
Dès lors que la distribution est installée, nous allons commencer par mettre à jour celle-ci à l’aide des commandes suivantes :
sudo apt update
sudo apt upgrade
Désormais, la distribution est à jour.
Maintenant, nous allons installer l’utilitaire Certbot.
Installation de Certbot
Pour installer Certbot sur la distribution, lancer la commande ci-dessous :
sudo apt install certbot
Certbot est installé et prêt à être utilisé.
Génération d'un certificat
Dans cet exemple, le certificat demandé est celui d’une instance ADFS.
Le nom de l’instance est : fs.teddycorp.fr
Il est donc nécessaire que le SAN du certificat comporte cet alias DNS.
Le manuel de l’utilitaire Certbot est disponible dans le lien ci-dessous :
La commande à lancer pour obtenir le certificat est la suivante :
sudo certbot certonly --manual -d fs.teddycorp.fr --preferred-challenges dns
Notons que les attributs suivants sont utilisés :
- -d : représente une entrée du SAN, répéter N fois “-d enr1.exemple.fr” pour compléter la liste du SAN.
- –preferred-challenges : force la méthode de vérification de propriété du domaine.
Pour faire simple, nous demandons un certificat pour “fs.teddycorp.fr” en utilisant comme vérification l’ajout d’un enregistrement TXT dans le DNS.
Depuis WSL, lancer la commande suivante :
sudo certbot certonly --manual -d fs.teddycorp.fr --preferred-challenges dns
Renseigner les informations demandés.
Dans la zone publique du DNS créez l’enregistrement demandé. A savoir :
- Type : TXT
- Enregistrement : _acme-challenge.fs.teddycorp.fr
- Valeur : pdlWCh9fi5kV4vDJ6Jg1dvQa8U8f488uvqkwgULtnh8
Attendre quelques minutes après la création de l’enregistrement DNS puis continuer le processus Certbot.
Le nouveau certificat est créé dans le répertoire “/etc/letsencrypt/live/fs.teddycorp.fr/” de la VM.
Récupération et conversion du certificat
Maintenant que le nouveau certificat est généré dans le répertoire “/etc/letsencrypt/live/fs.teddycorp.fr”. Nous allons le récupérer sur la machine Windows.
Notons que le certificat est composé de plusieurs fichiers, à savoir :
- cert.pem
- chain.pem
- fullchain.pem
- privkey.pem
Dans les étapes suivantes, seuls les fichiers suivants seront utilisés :
- fullchain.pem –> Le certificat et les CA.
- privkey.pem –> La clef privée du certificat.
Pour récupérer le certificat dans le répertoire “C:\temp\” utiliser la commande ci-dessous :
cp -rf /etc/letsencrypt/live/fs.teddycorp.fr/ /mnt/c/Temp/
Afin de rendre le certificat utilisable sur les environnements Windows, il est nécessaire de le convertir au format “pfx”.
Pour ce faire, nous allons utiliser l’utilitaire natif Windows “CERTUTIL.EXE”.
La conversion va opérer un merge des fichiers “fullchain.pem” et “privkey.pem”.
Il est nécessaire de renommer ces deux fichiers pour que ceux-ci répondent aux exigences de l’utilitaire “CERTUTIL”. A savoir :
- fullchain.pem –> fs-teddycorp-fr.pem
- privkey.pem –> fs-teddycorp-fr.key
mv /mnt/c/Temp/fs.teddycorp.fr/fullchain.pem /mnt/c/Temp/fs.teddycorp.fr/fs-teddycorp-fr.pem
mv /mnt/c/Temp/fs.teddycorp.fr/privkey.pem /mnt/c/Temp/fs.teddycorp.fr/fs-teddycorp-fr.key
À présent nous pouvons lancer la création du certificat au format “pfx” à l’aide de la commande suivante (exécuter en PowerShell) :
certutil -MergePFX .\fs-teddycorp-fr.pem .\fs-teddycorp-fr.pfx
Le certificat ainsi que la clef privée sont désormais au format pfx dans le fichier “fs-teddycorp-fr.pfx”.
Il est possible d’importer le certificat dans les magasins Windows. Une fois l’import réalisé, nous pouvons consulter les informations du certificat notamment le champ SAN.