Moby: acceder al registro privado: x509: certificado firmado por una autoridad desconocida

Creado en 30 oct. 2014  ·  39Comentarios  ·  Fuente: moby/moby

Configuré el registro de docker con nginx siguiendo aquí .

Ejecuto 'docker login', obtengo este error:

# docker login -u docker -p docker -e [email protected] https://dev.registry.com
2014/10/30 11:12:08 Error response from daemon: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

Salida del daemon de docker:

[debug] server.go:1181 Calling POST /auth
[info] POST /v1.15/auth
[47687bb1] +job auth()
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
[debug] endpoint.go:109 Error unmarshalling the _ping RegistryInfo: json: cannot unmarshal bool into Go value of type registry.RegistryInfo
[debug] endpoint.go:113 Registry version header: '0.7.1'
[debug] endpoint.go:116 RegistryInfo.Version: "0.7.1"
[debug] endpoint.go:119 Registry standalone header: 'True'
[debug] endpoint.go:127 RegistryInfo.Standalone: true
Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[47687bb1] -job auth() = ERR (1)
[error] server.go:1207 Handler for POST /auth returned error: Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority
[error] server.go:110 HTTP Error: statusCode=500 Server Error: Post https://dev.registry.com/v1/users/: x509: certificate signed by unknown authority

Revisé el código. Creo que la función de inicio de sesión puede ser necesaria 'tlsConfig'
https://github.com/docker/docker/blob/master/registry/auth.go#L163

al igual que
https://github.com/docker/docker/blob/master/registry/registry.go#L49

# docker --version
Docker version 1.3.0, build c78088f
# curl --cacert ca.pem https://dev.registry.com/v1/_ping                 
true
# curl --cacert ca.pem -u docker:docker https://dev.registry.com/v1/users/
"OK"

# curl -u docker:docker https://dev.registry.com/v1/users/                
curl: (60) Peer certificate cannot be authenticated with known CA certificates
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Comentario más útil

Gracias, eso también funcionó para mí. Pasos equivalentes en Ubuntu / Debian:

  1. Copie el certificado de CA en /usr/local/share/ca-certificates .
  2. sudo update-ca -ificates
  3. reinicio de la ventana acoplable del servicio sudo

Sin embargo, todavía hay un error aquí. Los documentos dicen que instale el certificado de CA en /etc/docker/certs.d/<registry> , y claramente eso no es suficiente. De hecho, después de instalar el certificado globalmente, eliminé el de /etc/docker/certs.d , reinicié Docker y aún funcionó.

Todos 39 comentarios

@hustcat A partir de Docker 1.3.1, puede hacer --insecure-registry dev.registry.com:5000 puede reemplazar 5000 con cualquier puerto en el que esté escuchando su registro.

Estoy cerrando esto ahora, pero háganos saber en los comentarios si esto no resolvió su problema.

Dejo esto aquí porque me tomó unos minutos resolverlo y podría ahorrarle tiempo a alguien. El comando sería:

%> docker --insecure-registry=docker-registry.example.com:8080 login https://docker-registry.example.com:8080

¡Gracias por poner en marcha el cambio para la versión 1.3!

Estoy enfrentando el mismo problema. La validación del certificado funciona para el ping (y presionar / tirar), pero no para iniciar sesión.

La bandera --insecure-registry es una solución alternativa, no una solución. La validación del certificado debería funcionar si el certificado de CA se carga en /etc/docker/certs.d/<registry> , pero no es así.

No puedo hacerlo funcionar configurando --insecure-registry Estoy en la ventana acoplable 1.3.2 en RedHat 7

[ root @ ip-10-2-20-209 ec2-user] # docker --insecure-registry = qa.docker.repo login https: //qa.docker.repo
Nombre de usuario: qa
Contraseña:
Correo electrónico: [email protected]
2015/01/19 14:26:40 Respuesta de error del demonio: Error del servidor: Publicar https: //qa.docker.repo/v1/users/ : x509: certificado firmado por una autoridad desconocida

curl funciona bien cuando utilizo el archivo ca.pem generado.

curl --cacert /home/ec2-user/ca.pem -u qa: xxxxx https: //qa.docker.repo/v1/users/
"OK"

Tengo el mismo problema en la versión 1.3.2 de Docker y opensuse 13.1. Incluso intenté pasar estáticamente --cafile cacert.pem a cada llamada de curl (ya que asumí que Docker internamente solo usa curl), sin embargo, esto tampoco ayudó.

Cualquier ayuda será muy apreciada.

Gracias.
Mario

Antes de encontrar este problema, abrí # 10150. Parecen ser el mismo problema.

Parece que tengo el mismo problema. Cliente de Archlinux 1.4.1 y el registro que se ejecuta desde el contenedor Docker oficial. ¿Alguien tiene alguna idea?

Si ha instalado el certificado globalmente (a través de certificados ca), asegúrese de reiniciar la ventana acoplable, ya que no volverá a cargar los certificados ssl globales. Dicho esto, el mío todavía no funciona, pero me encontré con eso en el trabajo :)

Gracias grimmy, eso hizo el truco de mi parte y finalmente funciona. Yo hice:

  1. Obtenga cacert.pem de http://curl.haxx.se/docs/caextract.html
  2. Copie el archivo cacert.pem en / etc / pki / trust / anchors /
  3. sudo update-ca -ificates
  4. sudo systemctl docker stop
  5. sudo systemctl docker start

mario

Gracias, eso también funcionó para mí. Pasos equivalentes en Ubuntu / Debian:

  1. Copie el certificado de CA en /usr/local/share/ca-certificates .
  2. sudo update-ca -ificates
  3. reinicio de la ventana acoplable del servicio sudo

Sin embargo, todavía hay un error aquí. Los documentos dicen que instale el certificado de CA en /etc/docker/certs.d/<registry> , y claramente eso no es suficiente. De hecho, después de instalar el certificado globalmente, eliminé el de /etc/docker/certs.d , reinicié Docker y aún funcionó.

+1 por reabrir esto, como mencionó @rhasselbaum

¿Ha desaparecido --insecure-registration?

$ docker --version
Docker version 1.8.2, build 0a8c2e3

$ docker --insecure-registry
flag provided but not defined: --insecure-registry
See 'docker --help'.

¿Qué debemos usar ahora?

que va en el archivo de configuración de la ventana acoplable, puede verificar si está configurado mirando
el proceso de la ventana acoplable debería ver la marca --insecure-registry

El miércoles 16 de septiembre de 2015 a las 3:01 a. M., Chris Withers [email protected]
escribió:

¿Ha desaparecido --insecure-registration?

$ docker --version
Docker versión 1.8.2, compilación 0a8c2e3

$ docker - registro inseguro
indicador proporcionado pero no definido: --insecure-registration
Consulte 'docker --help'.

¿Qué debemos usar ahora?

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/docker/docker/issues/8849#issuecomment -140693481.

Recibí el mismo error para el comando docker pull y creo que lo siguiente debería funcionar.
Copie el certificado SSL que es el archivo '.crt' en el directorio

sudo cp foo.crt /usr/share/ca-certificates/extra/foo.crt
Deje que Ubuntu agregue la ruta del archivo '.crt' relativa a / usr / share / ca -ificates a /etc/ca-certificates.conf

sudo dpkg-reconfigure certificados-ca

si el estado de su máquina no es importante, entonces puede ejecutar docker-machine rm <machine-name> y crear otro;)

Si usa LetsEncrypt y no desea ejecutar nada sin el TLS adecuado, asegúrese de proporcionar la cadena completa del certificado, incluidos los intermedios (es decir, REGISTRY_HTTP_TLS_CERTIFICATE = ... / fullchain.pem), es posible que vea verde en Chrome mientras sigue recibiendo este error de Docker.

¡Salud!

En Ubuntu. Si experimenta un error:

  • x509: no se puede validar el certificado para [dirección IP o nombre de dominio] porque no contiene ninguna SAN IP

En el registro de Docker, el certificado tenía que compilarse con subjectAltName como se describe aquí:
https://docs.docker.com/engine/security/https/

Aquí está el código por conveniencia:
$ echo subjectAltName = IP: 10.10.10.20, IP: 127.0.0.1> extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
-CAcreateserial -out server-cert.pem -extfile extfile.cnf

Tenga en cuenta que pude verificar que el nombre alternativo del sujeto está presente en el certificado usando el siguiente comando:
openssl x509 -in certificado.crt -text -noout

Sin embargo, en el cliente Ubuntu 14 (es decir, Docker Engine)
Este error fue seguido por
x509: certificado firmado por una autoridad desconocida

Para personas que usan Ubuntu 14.
El archivo de configuración que se usa para el motor de Docker (que quiero usar para conectarme al Registro de Docker):
/ etc / default / docker

allí, debe especificar las opciones de la ventana acoplable:
DOCKER_OPTS = "- registro inseguro myinsecure. Com: 5000 "

Luego reinicie el demonio (agregue sudo si su usuario no puede iniciar un servicio de Docker):
Reinicio de la ventana acoplable del servicio $ [sudo]

No es necesario que el valor sea un nombre de dominio, simplemente debe coincidir con el certificado con el que está registrado; Tengo una dirección IP con un puerto y esto funciona ... (es decir, 100.100.100.100:100)

Todo esto me tomó un día, así que lo estoy publicando con la esperanza de que sea útil para otras personas ...

@JazzDeben ¡ Gracias por tus comentarios! muy útil ! No estoy seguro de cómo hacerlo con un certificado generado por certbot de Let's Encript.
obtengo este error en el servidor de registro

tls: client didn't provide a certificate

Chrome se queja de ERR_BAD_SSL_CLIENT_AUTH_CERT
si incluyo

  tls:
...
    clientcas:
      - /path/to/ca.pem

@ cjw296 Para RHEL7.2, edité el archivo, /usr/lib/systemd/docker.service , y en la línea ExecStart agregué --insecure-registry=your.docker.registry.com .

< ExecStart=/usr/bin/dockerd
---
> ExecStart=/usr/bin/dockerd --insecure-registry=your.docker.registry.com

Luego ejecuté sudo systemctl daemon-reload para recoger el cambio de configuración, seguido de sudo systemctl restart docker . Y ahora funciona.

Para ser honesto, todavía soy un novato systemd y probablemente hay mejores formas de hacer esto de manera más limpia. Pero luché con esto durante demasiado tiempo y quería publicar una solución. Gracias a @ cdub50 por guiarme en la dirección correcta.

@ david-drinn Para Fedora 25, hice algo similar, pero dado que la configuración de las fuentes del demonio docker (en /usr/lib/systemd/system/docker.service ) se configuró a partir de los archivos de configuración, hice el cambio en /etc/sysconfig/docker :

< # INSECURE_REGISTRY='--insecure-registry='
---
> INSECURE_REGISTRY='--insecure-registry=your.docker.registry.com'

Si curl funciona y la ventana acoplable no, puede:
o cree el "/etc/docker/certs.d// ... "directorio y archivos (¿válido solo para registros privados?)
o agregue una entrada "tlscert" en su archivo "/etc/docker/daemon.json", para que dockerd use los mismos certificados que curl.

Para aquellos que se encuentran con este problema y tienen certificados autofirmados y no quieren utilizar la directiva "registro inseguro", deben cargar sus certificados autofirmados en /etc/docker/certs.d/{host}/ . Después de cargarlos, recuerde REINICIAR el demonio de la ventana acoplable. Para elaborar un poco más .....

Si su registro está alojado en https://exampleregistry.com , debe tener un directorio llamado /etc/docker/certs.d/exampleregistry.com con sus certificados autofirmados dentro. Ahora podrá hacer docker login exampleregistry.com sin error x509.
Ahora aquí hay una advertencia a todo esto, digamos que, por alguna razón, desea definir explícitamente el puerto en su comando de inicio de sesión como este docker login exampleregistry.com:443 (que no tendría sentido, pero esto es solo un ejemplo), entonces necesita para asegurarse de que sus certificados autofirmados estén dentro de una carpeta llamada /etc/docker/certs.d/exampleregistry.com:443/ . Docker no hace suposiciones sobre la resolución de certificados basados ​​en el nombre de host solo cuando se usa un puerto. En realidad, debe proporcionar certificados por puerto cargando sus certificados autofirmados en un nombre de carpeta que incluye el puerto al que está intentando acceder.

Con suerte, esto les ahorrará mucha depuración a muchos de ustedes que están usando puertos para conectarse a su registro de Docker.

Esto no se resuelve en mi caso:
Quiero usar un certificado autofirmado para el repositorio OSS de nexus. Pero recibo este error: Respuesta de error del demonio: Obtener https: //: 10250 / v1 / users /: x509: certificado firmado por una autoridad desconocida

He colocado el archivo .crt en /etc/docker/certs.d así como / usr / share / ca -ificates en mi máquina ubuntu 16.04 om intel. Ejecuté luego update-ca -ificates y reinicié la ventana acoplable. este es mi archivo cert nexus.cert:
$ openssl x509 -en nexus.crt -text

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Validity
            Not Before: Jul 17 20:28:26 2017 GMT
            Not After : Jul 17 20:28:26 2018 GMT
        Subject: C=IN, ST=State, L=City, O=XYZ, OU=x, CN=<mydomain.com>
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:b8:2c:97:c2:e4:bf:7a:e1:49:22:9b:a2:90:7a:
                    3a:de:3d:d3:f5:e9:c9:8b:9b:c8:13:37:4b:36:32:
                    4f:a7:0d:b9:53:4c:f4:10:fa:e7:d2:64:a5:e9:0a:
                    32:49:c3:aa:f8:2c:27:82:94:85:c3:11:07:a7:d0:
                    6c:0a:4a:45:66:94:cb:d3:27:28:cd:58:43:5b:f9:
                    e1:66:97:52:81:be:03:53:d5:e1:84:0c:4f:89:fd:
                    78:6d:8f:88:cf:29:af:6d:14:2e:2e:dc:d4:f3:87:
                    1c:73:5e:35:cb:d2:95:58:20:55:c0:f5:89:e1:40:
                    64:16:cd:25:a8:bd:6b:6a:9c:21:b0:97:d2:67:63:
                    5c:3c:4a:2c:21:1a:72:3a:68:c6:a0:e2:ea:4d:f8:
                    db:bd:02:81:93:db:60:51:ad:6e:bf:d7:7d:45:43:
                    95:e1:a5:d7:de:36:76:7c:a4:d7:4a:7f:b2:b1:98:
                    75:7d:27:2c:1d:ad:03:1b:5f:8a:ac:12:5e:76:9c:
                    2a:f7:03:b0:51:6c:23:a4:df:08:1f:02:0c:42:b6:
                    ff:7f:33:16:b0:86:fc:92:e7:db:7a:3b:a2:70:30:
                    f4:79:fa:f1:0f:75:0f:32:69:79:97:73:f4:de:11:
                    3e:bf:f8:63:49:21:dc:02:c6:ef:de:91:74:03:6d:
                    21:56:2e:c6:04:d1:02:30:73:6e:52:c7:93:07:6c:
                    f9:98:ff:1c:cc:dd:da:c7:45:2e:7b:ab:04:33:fe:
                    39:6c:5d:d5:dd:46:ae:25:d6:fd:9d:01:ae:8a:e8:
                    14:18:cc:6e:64:e4:11:8a:ce:3d:30:56:6d:0c:a7:
                    83:90:6c:f5:14:36:16:39:cc:10:7a:db:35:f6:9c:
                    68:da:84:f6:9c:07:d0:3e:b7:52:54:03:75:9a:ae:
                    eb:79:b5:5f:cb:10:cf:25:08:ae:f7:b3:13:79:f4:
                    4a:98:72:08:e3:23:e2:22:a1:31:47:41:ec:a4:76:
                    42:db:1c:46:31:3c:a2:14:14:94:bf:4f:1e:1f:85:
                    a0:9c:4c:3d:af:92:7a:90:d1:ad:23:f0:ea:3e:7d:
                    b4:21:79:f9:82:3a:16:04:42:60:b8:5d:15:1c:48:
                    9b:1e:b5:9b:0d:1f:aa:56:aa:a2:1a:a5:6f:ef:ab:
                    2a:22:6d:05:19:c0:2b:dc:46:c4:c2:4a:f8:89:25:
                    fc:dc:e6:ab:7b:8a:76:de:47:a3:e2:00:0e:d7:e8:
                    bd:86:86:d3:8d:6b:56:63:bf:40:1e:31:d7:74:fe:
                    63:fc:7e:e2:9f:21:31:1d:39:2a:44:a5:56:fd:dd:
                    66:5e:c2:4f:94:c7:ee:26:89:1a:d1:6b:13:00:f6:
                    4f:72:9b
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         25:26:77:55:50:0a:66:39:5f:79:c7:5e:af:5f:54:e2:92:6f:
         62:e5:90:3a:0f:de:9b:7a:02:df:66:47:c5:71:61:91:c4:74:
         ba:0e:55:34:47:0b:72:c5:f5:27:5d:d0:d6:06:a9:f7:5c:d5:
         41:30:4c:0f:0b:3a:3c:64:13:a0:28:9b:10:92:0e:c8:eb:e8:
         0f:00:ba:54:9d:d4:7a:8c:cd:f7:91:a9:55:69:0f:9b:12:77:
         e9:f2:28:c8:cb:07:d4:ab:a4:eb:b2:3d:ae:b4:6d:7a:15:85:
         cb:07:f6:e3:6b:58:1c:26:0a:ad:d5:e6:7c:b7:e7:19:6c:d1:
         31:80:5e:cb:17:85:88:a2:6c:fc:fe:3c:28:1f:f9:87:a6:0f:
         f6:85:d2:c0:76:25:fb:52:2f:8a:99:0c:88:4e:bd:84:6b:da:
         81:b4:41:f1:bf:1c:e7:7d:93:a5:e2:d7:66:8a:63:bf:9c:c4:
         ad:ea:cb:c4:c6:7d:1f:95:35:87:60:8b:e8:23:e8:4e:36:43:
         5e:86:de:c4:35:e0:29:7a:93:90:a4:9b:c3:d1:8e:13:55:9f:
         ea:ab:52:0a:a8:a0:54:cf:f4:5e:ff:12:40:09:43:3c:e7:55:
         e7:c1:de:62:ce:21:39:f5:d3:51:7a:92:f2:b2:3c:75:8c:1f:
         bd:aa:13:63
-----BEGIN CERTIFICATE-----
MIIEPDCCAyQCAQEwDQYJKoZIhvcNAQELBQAwZDELMAkGA1UEBhMCSU4xEjAQBgNV
BAgTCUthcm5hdGFrYTESMBAGA1UEBxMJQmFuZ2Fsb3JlMQwwCgYDVQQKEwNJQk0x
DDAKBgNVBAsTA2x0YzERMA8GA1UEAxMIbHRjeC5jb20wHhcNMTcwNzE3MjAyODI2
WhcNMTgwNzE3MjAyODI2WjBkMQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0
YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDDAKBgNVBAoMA0lCTTEMMAoGA1UECwwD
bHRjMREwDwYDVQQDDAhsdGN4LmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
AgoCggIBALgsl8Lkv3rhSSKbopB6Ot490/XpyYubyBM3SzYyT6cNuVNM9BD659Jk
pekKMknDqvgsJ4KUhcMRB6fQbApKRWaUy9MnKM1YQ1v54WaXUoG+A1PV4YQMT4n9
eG2PiM8pr20ULi7c1POHHHNeNcvSlVggVcD1ieFAZBbNJai9a2qcIbCX0mdjXDxK
LCEacjpoxqDi6k34270CgZPbYFGtbr/XfUVDleGl1942dnyk10p/srGYdX0nLB2t
AxtfiqwSXnacKvcDsFFsI6TfCB8CDEK2/38zFrCG/JLn23o7onAw9Hn68Q91DzJp
eZdz9N4RPr/4Y0kh3ALG796RdANtIVYuxgTRAjBzblLHkwds+Zj/HMzd2sdFLnur
BDP+OWxd1d1GriXW/Z0BroroFBjMbmTkEYrOPTBWbQyng5Bs9RQ2FjnMEHrbNfac
aNqE9pwH0D63UlQDdZqu63m1X8sQzyUIrvezE3n0SphyCOMj4iKhMUdB7KR2Qtsc
RjE8ohQUlL9PHh+FoJxMPa+SepDRrSPw6j59tCF5+YI6FgRCYLhdFRxImx61mw0f
qlaqohqlb++rKiJtBRnAK9xGxMJK+Ikl/Nzmq3uKdt5Ho+IADtfovYaG041rVmO/
QB4x13T+Y/x+4p8hMR05KkSlVv3dZl7CT5TH7iaJGtFrEwD2T3KbAgMBAAEwDQYJ
KoZIhvcNAQELBQADggEBACUmd1VQCmY5X3nHXq9fVOKSb2LlkDoP3pt6At9mR8Vx
YZHEdLoOVTRHC3LF9Sdd0NYGqfdc1UEwTA8LOjxkE6AomxCSDsjr6A8AulSd1HqM
zfeRqVVpD5sSd+nyKMjLB9SrpOuyPa60bXoVhcsH9uNrWBwmCq3V5ny35xls0TGA
XssXhYiibPz+PCgf+YemD/aF0sB2JftSL4qZDIhOvYRr2oG0QfG/HOd9k6Xi12aK
Y7+cxK3qy8TGfR+VNYdgi+gj6E42Q16G3sQ14Cl6k5Ckm8PRjhNVn+qrUgqooFTP
9F7/EkAJQzznVefB3mLOITn101F6kvKyPHWMH72qE2M=
-----END CERTIFICATE-----

@abdasgupta : ¿puedes "curvar" tu repositorio?
Si es así, verifique qué archivo de certificados está usando curl y edite su archivo daemon.json para usar ese mismo archivo.
En mi caso fue:
[ root @ localhost ] # cat /etc/docker/daemon.json
{"registros inseguros": ["registro-1.docker.io/v2:5000"],
"debug": verdadero,
"tlscert": "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" <<<< ======
}

No quería usar esos registros inseguros ... ¿no es posible ejecutar sin él? además, el certificado es el mismo que el del repositorio .. cz lo copié desde allí.

Supongo que se puede ejecutar sin registros inseguros. ¿Puede acceder a su repositorio con un comando "curl"?
Atentamente.

De: Abhishek Dasgupta [mailto: [email protected]]
Envoyé: mardi 18 de julio de 2017 18:30
À: moby / moby
Cc: Frédéric Castelain; Comentario
Objet: Re: [moby / moby] acceder al registro privado: x509: certificado firmado por una autoridad desconocida (# 8849)

No quería usar esos registros inseguros ... ¿no es posible ejecutar sin él? además, el certificado es el mismo que el del repositorio .. cz lo copié desde allí.

-
Estás recibiendo esto porque hiciste un comentario.
Responda a este correo electrónico directamente, véalo en GitHub https://github.com/moby/moby/issues/8849#issuecomment-316120117 , o silencie el hilo https://github.com/notifications/unsubscribe-auth/ANgcLAxGE34n7fSByG0svUJry3vtTAR7ksus5sPN2Jga0

AVISO: Este correo electrónico (incluidos los archivos adjuntos) puede contener información o material privado, confidencial o legalmente privilegiado y está destinado únicamente para el uso de los destinatarios. Si recibe este correo electrónico por error, elimínelo de su sistema sin copiarlo y notifique inmediatamente al remitente por correo electrónico de respuesta. Cualquier uso o divulgación no autorizados de este mensaje está estrictamente prohibido. STEF no garantiza la integridad de esta transmisión y, por lo tanto, nunca será responsable si el mensaje es alterado o falsificado ni por ningún virus, interceptación o daño a su sistema.

AVIS: mensaje Ce (y que comprende toutes pièces jointes) peut contenir des informations privées, confideielles et est pour l'usage du (es) seul (s) destinataire (s). Si vous avez recu ce message par erreur, merci d'en avertir l'expéditeur par retour d'email immédiatement et de procéder à la destrucción de l'ensemble des éléments reçus, dont vous ne devez garder aucune copie. Difusión, utilización o copie de ce mensaje ou des renseignements qu'il contient par une personne autre que le (les) destinataire (s) désigné (s) est interdite. STEF ne garantit pas l'intégrité de cette transmisión et ne saurait être tenu responsable du mensaje, de son contenu, de toute modificación o falsificación, d'une interception o dégâts à votre système.

@abdasgupta , he notado que la versión 17.03.1~ce-0~ubuntu-xenial no funciona, pero la versión 17.06.0~ce-0~ubuntu funciona.

Pongo un crt en /usr/local/share/ca-certificates/my-org/my-domain.crt , luego hago sudo update-ca-certificates y sudo systemctl restart docker .

¿Puede intentar seguir las instrucciones en https://docs.docker.com/v17.03/engine/security/certificates/ ? Docker 1.13 y versiones posteriores también deberían leer los certificados de los valores predeterminados del sistema, de lo contrario;

Un certificado personalizado se configura creando un directorio bajo /etc/docker/certs.d usando el mismo nombre que el nombre de host del registro (por ejemplo, localhost ). Todos los archivos *.crt se agregan a este directorio como raíces de CA.

Después de configurar los certificados, es posible que sea necesario reiniciar el demonio.

Para cualquiera que tenga problemas con la solución /etc/docker/certs.d , asegúrese de que el nombre de su directorio debajo incluya el puerto de registro. Entonces /etc/docker/certs.d/myregistry.net:8443 .

Funcionó bien para mí en Photon OS.

Estaba luchando con este error hasta que pensé que estaba nombrando el archivo /etc/docker/certs.d/myregistry/ ca.pem en lugar de /etc/docker/certs.d/myregistry/ ca.crt

Estaba teniendo el mismo problema en Windows, hasta que miré los documentos , lo que sugiere usar mi autoridad de certificación en el Explorador de Windows ( ca.pem renombrado como ca.crt ) y Right-Click > Install Certificate y seleccionar Autoridades de certificación raíz de confianza para el usuario actual. Se reinició la ventana acoplable y funcionó.

en coreos, tuve que editar
/etc/docker/daemon.json
{ "insecure-registries": ["registry:8443"] }
luego sudo systemctl restart docker

Sugerencia: si llega a su repositorio privado a través de un proxy, puede experimentar el mismo mensaje de error, deshabilite el proxy o configure una excepción (quizás NO_PROXY) para el host de registro privado.

Estoy ejecutando docker-registry como Kubernetes POD en Rancher. He configurado un L7 Ingress y el certificado SSL se encuentra allí. cuando accedo desde el navegador web, no tengo ningún problema con SSL, y las credenciales de inicio de sesión funcionan bien. pero si ejecuto el comando de inicio de sesión de Docker, obtengo el certificado x509: firmado por una autoridad desconocida, que creo que está tratando de obtener el backend de entrada predeterminado con el certificado autofirmado SSL falso. Estoy reiniciando la ventana acoplable en mi computadora para ver si eso ayuda.

Solía ​​funcionar ... Hice un pequeño cambio en mi ingreso para admitir un nuevo certificado SSL para dos nombres de host
después de reiniciar Docker en mi computadora portátil sigue siendo el mismo problema :(

Hola hermano .. Este problema es el mismo que el mío.
Openshift no puede importar imágenes para el repositorio nexus, la sintaxis es
oc import-image nexus- coba: 3.5 --desde = 192.168.250.250: 8083 / node-nexus --confirmar
error: la última etiqueta falló: se produjo un error interno: obtenga https://192.168.250.250 : 8083 / v2 /: x509: certificado firmado por una autoridad desconocida
imagestream.image.openshift.io/nexus-coba importado con errores
Esta solución solo agrega --insecure después de --confirmar.

oc import-image nexus- coba: 3.5 --desde = 192.168.250.250: 8083 / node-nexus --confirm --insecure

Gracias, eso también funcionó para mí. Pasos equivalentes en Ubuntu / Debian:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

Sin embargo, todavía hay un error aquí. Los documentos dicen que instale el certificado de CA en /etc/docker/certs.d/<registry> , y claramente eso no es suficiente. De hecho, después de instalar el certificado globalmente, eliminé el de /etc/docker/certs.d , reinicié Docker y aún funcionó.

¡Muchísimas gracias! Estaba haciendo exactamente lo que estaba describiendo, tirando de mi cabello de la documentación oficial que estaba mal ... :)

¡No lo creo! 5 años después, sigue siendo cierto, gracias por la solución.

Gracias, eso también funcionó para mí. Pasos equivalentes en Ubuntu / Debian:

1. Copy CA cert to `/usr/local/share/ca-certificates`.

2. sudo update-ca-certificates

3. sudo service docker restart

Sin embargo, todavía hay un error aquí. Los documentos dicen que instale el certificado de CA en /etc/docker/certs.d/<registry> , y claramente eso no es suficiente. De hecho, después de instalar el certificado globalmente, eliminé el de /etc/docker/certs.d , reinicié Docker y aún funcionó.

¿Significa que debo instalar el certificado en la imagen de la ventana acoplable del registro también en el nginx?

Icono de Docker-Desktop -> Preferencias -> Daemon -> "Registros inseguros", haga clic en el icono +
Agregue su repositorio "your-registry.com"
haga clic en "Aplicar y reiniciar"

image

Consulte https://forums.docker.com/t/docker-private-registry-x509-certificate-signed-by-unknown-authority/21262/6 para obtener más información.

¿Fue útil esta página
0 / 5 - 0 calificaciones