web-dev-qa-db-fra.com

certificats ssl docker container

Existe-t-il un moyen élégant d’ajouter des certificats SSL aux images provenant de Docker Pull ?.

Je cherche un moyen simple et reproductible d’ajouter un fichier dans/etc/ssl/certs et d’exécuter update-ca-certificates. (Cela devrait couvrir les images Ubuntu et Debian).

J'utilise docker sur CoreOS, et la machine coreos fait confiance aux certificats SSL nécessaires, mais les conteneurs de docker ne disposent évidemment que des valeurs par défaut.

J'ai essayé d'utiliser docker run --entrypoint=/bin/bash pour ensuite ajouter le cert et lancer update-ca-certificates, mais cela semble remplacer en permanence le point d’entrée.

Je me demande aussi maintenant, serait-il plus élégant de simplement monter /etc/ssl/certs sur le conteneur à partir de la copie des machines hôtes? Cela permettrait implicitement aux conteneurs de faire confiance aux mêmes choses que l'hôte.

Je suis au travail avec un proxy agaçant qui résigne tout :(. Ce qui casse SSL et rend les conteneurs assez bizarres.

61
Beau Trepp

Montez les certificats sur le Docker conteneur en utilisant -v:

docker run -v /Host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"
57
cdrev

J'essaie de faire quelque chose de semblable à ceci. Comme indiqué ci-dessus, je pense que vous voudriez créer une nouvelle image avec un fichier Docker personnalisé (en utilisant l'image que vous avez extraite comme image de base), ADD votre certificat, puis RUN update-ca-certificates. De cette façon, vous aurez un état cohérent chaque fois que vous démarrez un conteneur à partir de cette nouvelle image.

# Dockerfile
FROM some-base-image:0.1
ADD you_certificate.crt:/container/cert/path
RUN update-ca-certificates

Disons un docker build contre ce Dockerfile a généré IMAGE_ID. Au prochain docker run -d [any other options] IMAGE_ID, le conteneur démarré par cette commande contiendra vos informations de certificat. Simple et reproductible.

20
shudgston

Comme suggéré dans le commentaire ci-dessus , si le magasin de certificats sur l'hôte est compatible avec l'invité, vous pouvez simplement le monter directement.

Sur un hôte Debian (et un conteneur), j'ai réussi à:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ...
16
Jonathon Reinhart