La connexion au registre Docker échoue avec « Certificat signé par une autorité inconnue »

StackOverflow https://stackoverflow.com//questions/25005538

  •  20-12-2019
  •  | 
  •  

Question

J'utilise un registre Docker privé sur Ubuntu en utilisant S3 pour le stockage.J'ai des problèmes pour faire fonctionner les commandes docker login/push/pull via SSL.J'utilise Nginx devant Gunicorn pour exécuter le registre.Cela fonctionne sans aucun problème via HTTP, mais après être passé à HTTPS pour un système de production, il renvoie l'erreur suivante à partir de la connexion du client Docker.

Invalid Registry endpoint:  x509: certificate signed by unknown authority 

J'ai acheté un certificat PositiveSSL plutôt bon marché auprès de Commodo pour l'utiliser à cet effet.Je me suis assuré que l'autorité de certification racine et les autorités de certification intermédiaires sont installées sur le système Ubuntu exécutant le registre.Voici ma configuration nginx pour le serveur

    # Default nginx site to run the docker registry

    upstream docker-registry {
      server localhost:5000;
    }

    server {
      listen 443;

      server_name docker.ommited.net;

      ssl on;
      ssl_certificate /etc/ssl/docker-registry.crt;
      ssl_certificate_key /etc/ssl/docker-registry.key;

      proxy_set_header Host       $http_host;   # required for docker client's sake
      proxy_set_header X-Real-IP  $remote_addr; # pass on real client's IP

      client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads


      location / {
        proxy_pass http://localhost:5000/;
      }
    }

J'essaie de comprendre comment faire en sorte que Docker reconnaisse correctement le certificat ou ignore l'avertissement du certificat.J'utilise la version v0.7.3 de Docker-registry, le client particulier que j'utilise est Docker version 1.1.2, build d84a070.en passant, lors de la visite du registre dans un navigateur, le certificat est correctement reconnu.toute aide m'orientant dans la bonne direction serait grandement appréciée !

Était-ce utile?

La solution

Pour les certificats bon marché/moins connus comme ceux COMODO ou StartSSL, vous devez ajouter l'intégralité de la chaîne de certificats dans le fichier de certificat que vous utilisez avec nginx.De nombreux systèmes d'exploitation ne font pas confiance aux autorités de certification intermédiaires, mais uniquement à l'autorité de certification racine. Vous devez donc remplir les étapes manquantes entre le certificat de votre hôte et l'autorité de certification racine approuvée par le système d'exploitation.

Dans l'e-mail avec lequel vous avez reçu votre certificat, vous devriez également trouver des liens vers les autorités de certification intermédiaires et l'autorité de certification racine.Ouvrez le docker-registry.crt faites défiler vers le bas et ajoutez les autorités de certification intermédiaires et, enfin, le certificat d'autorité de certification racine pour la chaîne PositiveSSL.Une fois cela fait, redémarrez nginx.Vous devriez maintenant être prêt à partir.

Autres conseils

Pour les hôtes RHEL, vous pouvez ajouter le CA CERT à la liste de CA PKI de l'hôte client:

cp docker-registry.crt /etc/pki/ca-trust/source/anchors/docker-registry.crt
update-ca-trust
systemctl restart docker

de https://www.happappyassassin.net/2014/09/06/adding-your-freeipa-servers-ca-certificate-a-the-system-wide-Trust-Store-On-Fedora-and-Rhel /

Si vous êtes sur Mac, ajoutez simplement le registre au insecure-registries mise en place ~/.docker/daemon.json:

{
  "debug" : true,
  "experimental" : true,
  "registry-mirrors" : [],
  "insecure-registries" : ["registry.your.domain.de"]
}

Si vous faites une erreur quelque part (j'ai oublié une virgule dans le JSON), des problèmes ultérieurs lors du démarrage du démon Docker pourraient survenir.À savoir toute commande docker lançant un Error response from daemon: Bad response from Docker engine.Quelques redémarrages et réinitialisations plus tard, cela s'est résolu tout seul.

Si vous utilisez letencrypt et nginx, modifiez simplement le ssl_certificate clé de cert.pem à fullchain.pem.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top