Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

[Docker] Installation de DTR avec une PKI ADCS

Après mon premier article sur l’utilisation d’UCP avec un certificat, nous allons voir comment faire de même avec DTR.

Les prérequis sont simples, avoir un ordinateur pour générer le certificats, un serveur pour DTR qui est déjà joint comme simple nœud à l’UCP, le certificat root de la PKI et un peu de temps Sourire

Pour commencer, depuis un ordinateur Windows qui est dans le même domaine que la CA, générez un nouveau certificat de type Web Server. Ajoutez lui les DNS correspondant aux futurs URL disponibles:

image

Cochez bien la case pour pouvoir exporter la clé privée:

image

Exportez ensuite le certificat avec sa clé privée:

image

image

Pour transformer les certificats en PEM et séparer la clé privée de la clé publique, vous aurez besoin de openssl. Exécutez les commandes suivants:

C:\OpenSSL-Win32\bin\openssl.exe pkcs12 -in "FLOAPP-DTR01.pfx" -nocerts -out "key.pem" –nodes

C:\OpenSSL-Win32\bin\openssl.exe pkcs12 -in "FLOAPP-DTR01.pfx" -nokeys -out "cert.pem"

image

Et pour supprimer la passphrase du certificat qui contient la clé privée:

C:\OpenSSL-Win32\bin\openssl.exe rsa -in "key.pem" -out "key.pem"

image

Allez ensuite sur votre site qui héberge DTR, https://votreip et allez dans Settings. Modifiez la partie Domain avec votre nouveau nom DNS, puis dans la partie TLS certificate, copiez la clé publique de votre certificat (cert.pem), ensuite dans TLS private key, la clé privée de votre certificat (key.pem) et enfin, dans TLS CA, la clé de votre CA, puis sauvegardez:

image

En allant sur https://votreurl vous devriez avoir votre nouveau certificat:

image

Il faut maintenant enregistrer votre serveur DTR dans l’UCP. Allez dans l’UCP, puis dans Settings > DTR. Renseignez l’URL vers votre DTR. Le certificat n’est pas nécessaire car l’UCP trust déjà le certificat:

image

Il faut maintenant truster la CA root que l’UCP a créé. Sur le serveur UCP, utilisez la commande suivante pour récupérer le certificat:

sudo docker run --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp dump-certs --cluster –ca

image

Copiez ce certificat dans un fichier nommé ucp-cluster-ca.pem. Copiez le résultat dans le DTR, dans Settings > Domain > Auth Bypass TLS Root CA:

image

Il faut maintenant copier le certificat root qui se trouve dans l’interface DTR, Settings > Domain > TLS CA dans /etc/docker/certs.d/dtr.florentappointaire.cloud/ca.crt. Utilisez les commandes suivantes pour créer le chemin et remplir le fichier avec le certificat:

mkdir -p /etc/docker/certs.d/dtr.florentappointaire.cloud/
vi /etc/docker/certs.d/dtr.florentappointaire.cloud/ca.crt

image

Vous devez effectuer ceci sur chaque nœud de l’UCP. Je vais maintenant pousser une image docker, en l’occurrence celle-ci https://github.com/Flodu31/Floapp-Cloud , sur mon DTR. Pour faire ceci, j’ai créé un répertoire floapp-website:

image
Mon image docker est sur une VM qui n’a pas la CA root trustée. Avant de lancer l’upload, je vais devoir truster la CA sous peine d’avoir une erreur de certificat. Utilisez les commandes suivantes pour truster la CA:

export DOMAIN_NAME=dtr.florentappointaire.cloud
openssl s_client -connect $DOMAIN_NAME:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM | tee /usr/local/share/ca-certificates/$DOMAIN_NAME.crt
update-ca-certificates
service docker restart

image

Je me suis ensuite connecté à mon répertoire, j’ai construis mon image à partir d’un Dockerfile, j’ai taggué l’image et je l’ai poussé:

docker login dtr.florentappointaire.cloud
docker build -t floapp-website .
docker tag floapp-website:latest dtr.florentappointaire.cloud/fappointaire/floapp-website:latest
docker push dtr.florentappointaire.cloud/fappointaire/floapp-website:latest

image

Si vous retournez sur l’interface de DTR, vous avez maintenant la dernière version disponible:

image

Vous pouvez maintenant récupérer l’image depuis un nœud UCP, avec la commande suivante ou via l’UCP:

docker pull dtr.florentappointaire.cloud/fappointaire/floapp-website:latest

image

image

La vue depuis l’UCP une fois l’envoie terminé:

image

Vous pouvez maintenant déployer un container depuis l’UCP ou via la ligne de commande:

image

image

Après quelques secondes, le conteneur est déployé et vous pouvez y accéder via l’URL:

image

image

En espérant que cet article vous sera utile Sourire

Facebook Like
Anonymous