El inicio de sesión en el registro de Docker falla con un "Certificado firmado por una autoridad desconocida"

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

  •  20-12-2019
  •  | 
  •  

Pregunta

Estoy ejecutando un registro de Docker privado en Ubuntu usando S3 para almacenamiento.Tengo problemas para que los comandos de inicio de sesión, inserción y extracción de Docker funcionen a través de SSL.Estoy usando Nginx frente a Gunicorn para ejecutar el registro.Funciona sin problemas a través de HTTP, pero después de cambiar a HTTPS para un sistema de producción, arroja el siguiente error desde el inicio de sesión de la ventana acoplable del cliente.

Invalid Registry endpoint:  x509: certificate signed by unknown authority 

Compré un certificado PositiveSSL bastante económico de Commodo para usarlo en esto.Me he asegurado de que la CA raíz y las CA intermedias estén instaladas en el sistema Ubuntu que ejecuta el registro.La siguiente es mi configuración de nginx para el servidor.

    # 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/;
      }
    }

Estoy tratando de descubrir cómo hacer que Docker reconozca correctamente el certificado o ignore la advertencia del certificado.Estoy ejecutando la versión v0.7.3 de Docker-Registry, el cliente particular que estoy usando es la versión 1.1.2 de Docker, compilación d84a070.Como nota al margen, al visitar el registro en un navegador, el certificado se reconoce correctamente.¡Cualquier ayuda que me indique la dirección correcta sería muy apreciada!

¿Fue útil?

Solución

Para los certificados baratos / menores conocidos, como el Comodo o StartSSL, debe agregar la cadena de certificados completa al archivo de certificado que está utilizando con NGINX.Muchos sistemas operativos no confían en el CAS intermedio, solo la raíz CA, por lo que debe completar los pasos que faltan entre el certificado para su host y la CA raíz que es confiable por el sistema operativo.

En el correo electrónico con el que recibió su certificado, también debe encontrar enlaces al CAS intermedio y la raíz CA.Abra el archivo docker-registry.crt, desplácese hasta la parte inferior, y agregue el CAS intermedio y, finalmente, el certificado de CA Root para la cadena positivessl.Una vez que haya hecho eso, reinicie Nginx.Ahora deberías ser bueno para ir.

Otros consejos

Para los hosts de RHEL, puede agregar el CA CERT a la lista PKI CA en el host del cliente:

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

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

Si está en Mac, simplemente agregue el registro al insecure-registries instalándose ~/.docker/daemon.json:

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

En caso de que cometa un error en algún lugar (olvidé una coma en el JSON), pueden surgir algunos problemas al iniciar el demonio acoplable.Es decir, cualquier comando de Docker que arroje un Error response from daemon: Bad response from Docker engine.Algunos reinicios y restablecimientos más tarde se resolvieron solos.

Si está utilizando letsencrypt y nginx, simplemente cambie el ssl_certificate clave de cert.pem a fullchain.pem.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top