Génération de certificats SSL personnalisés
Préparation de l'espace de travail
Créer des dossiers pour les certificats :
mkdir dataNginx mkdir dataCertbot
ou, pour un certificat auto-signé :
mkdir certificats
Génération d'un certificat signé par Let's Encrypt
Cette option est à privilégier, mais n'est valable que pour des serveurs accessibles depuis l'extérieur via un nom de domaine.
1 - Démarrer un serveur Nginx :
mkdir dataNginx docker run -dit --rm -p <port>:80 -v /<path-to>/dataNginx:/usr/share/nginx/html nginx:1.13-alpine
Exemple :
mkdir dataNginx
docker run -dit --rm -p 80:80 -v /home/utilisateur/dataNginx:/usr/share/nginx/html nginx:1.13-alpine
2 - Exécuter Certbot :
mkdir dataCertbot docker run -it -v /<path-to>/dataCertbot/conf:/etc/letsencrypt certbot/certbot certonly --manual -d <domaine>
Exemple :
mkdir dataCertbot
docker run -it -v /home/utilisateur/dataCertbot/conf:/etc/letsencrypt certbot/certbot certonly --manual -d 'depotImage.com'
3 - Certbot va alors demander de placer des données data dans un fichier file et d'y accéder via une url de la forme https://<domaine>/.well-known/acme-challenge/<file>. Avant de valider, ouvrir un nouveau terminal et faire :
echo data > <path-to>/dataNginx/.well-known/acme-challenge/file
Exemple :
url: https://depotImage.com/.well-known/acme-challenge/qsGlgKg8l2ZucF0wd39KR1YPbWFTr5DGdn-B84jE31o-
data: qsGlgKg8l2ZucF0wd39KR1YPbWFTr5DGdn-B84jE31o.XguEyJ5xzKTwpLgHTMij0fsoWzuFihUSmNpi97XBXvc -
Éditer le fichier
/home/utilisateur/.well-known/acme-challenge/qsGlgKg8l2ZucF0wd39KR1YPbWFTr5DGdn-B84jE31o:echo "qsGlgKg8l2ZucF0wd39KR1YPbWFTr5DGdn-B84jE31o.XguEyJ5xzKTwpLgHTMij0fsoWzuFihUSmNpi97XBXvc" > /home/utilisateur/.well-known/acme-challenge/qsGlgKg8l2ZucF0wd39KR1YPbWFTr5DGdn-B84jE31o
4 - Toujours avant de valider. Se rendre à l'adresse url : le navigateur doit proposer d'enregistrer un fichier du nom de file.
Si, et seulement si, la fenêtre apparaît, alors valider Certbot.
5 - Pour valider que la création du certificat a bien fonctionné, créer un fichier index.html dans le dossier <path-to>/dataNginx et accéder à l'adresse https://<domaine>.
Exemple :
-
Création du fichier
index.htmlecho 'Bonjour' > /home/utilisateur/dataNginx/index.html
-
Le navigateur, à l'adresse
https://depotImage.com, doit renvoyer un 'Bonjour'.
Les clés se trouvent alors dans <path-to>/dataCertbot/conf/live/<domaine>/.
Génération d'un certificat auto-signé
Cette option n'est pas à privilégier, mais permet néanmoins de faire fonctionner Harbor si le serveur n'est pas accessible via un nom de domaine depuis l'extérieur.
1 - Se placer dans le dossier certificats
2 - Générer une clé privée :
openssl genrsa -des3 -out server.key 1024
3 - Générer un certificat CSR, en indiquant dans "Common Name" l'adresse IP de la machine ou le nom de domaine :
openssl req -new -key server.key -out server.csr
4 - Supprimer la passphrase de la clé :
cp server.key server.key.org openssl rsa -in server.key.org -out server.key
5 - Générer le certificat auto-signé :
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Le certificat se trouve dans certificats/server.cert.
La clé privée se trouve dans certificats/server.key.