8 votes

Comment ajouter un certificat racine CA à l'intérieur d'une image Docker ?

Je lance une API Web ASP.NET Core 1.1 dans un conteneur Docker 1.13.1 sur Ubuntu 14.04.

Lorsque le code tente de récupérer des données à partir d'un serveur HTTPS, je reçois cette erreur d'authentification de certificat :

 Une erreur s'est produite lors de l'envoi de la requête. ---> System.Net.Http.CurlException: Le certificat du pair ne peut pas être authentifié avec les certificats CA donnés
   at System.Net.Http.CurlHandler.ThrowIfCURLEError(CURLcode error)
   at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(StrongToWeakReference`1 easyWrapper, CURLcode messageResult)

Le serveur HTTPS est interne avec un certificat signé par notre CA d'entreprise, donc je sais que je dois peut-être enregistrer le CA interne.

Jusqu'à présent, tout ce que j'ai trouvé sur cette erreur et Docker concerne le démarrage de Docker lui-même, la connexion aux dépôts, etc. Mon Docker fonctionne bien, et l'API Web s'exécute sur le serveur Ubuntu en dehors du conteneur sans aucun problème.

1) Dois-je ajouter un certificat de CA racine à l'intérieur d'une image Docker ?

2) Si oui, comment le faire ?

3) Sinon, comment puis-je résoudre ce problème ?

18voto

cebe Points 1047

La tâche en elle-même n'est pas spécifique à Docker car vous auriez également besoin d'ajouter ce CA sur un système normal. Il y a une réponse sur la communauté askubuntu sur la façon de faire cela.

Donc dans un Dockerfile vous feriez ce qui suit (n'oubliez pas chmod au cas où vous exécuteriez le conteneur avec un utilisateur autre que root) :

ADD your_ca_root.crt /usr/local/share/ca-certificates/foo.crt
RUN chmod 644 /usr/local/share/ca-certificates/foo.crt && update-ca-certificates

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X