Configuración del logging local con certificate autofirmado

Quiero configurar un logging de portador local con certificate autofirmado que usaré dentro de mi networking local. Estoy siguiendo las instrucciones del manual de Docker [1, 2], pero de todos modos encuentro errores.

Precisamente, mi problema es seguir. Creo un certificate autofirmado en la máquina de logging local:

openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \ -x509 -days 365 -out certs/domain.crt \ -subj "/C=US/ST=Oregon/L=Portland/O=Company Name/OU=Org/CN=openmpi-dockerregistry.local" 

Puse este certificate en /etc/docker/certs.d/openmpi-dockerregistry:443/ca.crt en cada una de las máquinas locales.

Entonces comienzo el logging y empujo una image allí. Como no tengo DNS configurado dentro de mi networking, simplemente coloco una input en /etc/hosts .

A continuación, bash tirar de la image en la máquina local, pero esta operación falla:

 $ docker run -it openmpi-dockerregistry.local:443/hello-world Unable to find image 'openmpi-dockerregistry.local:443/hello-world:latest' locally docker: Error response from daemon: Get https://openmpi-dockerregistry.local:443/v2/: x509: certificate is not valid for any names, but wanted to match openmpi-dockerregistry.local. See 'docker run --help'. 

Sospecho mucho del post "x509: el certificate no es válido para ningún nombre", lo que suena que no especifique CN correctamente, pero leer el certificate indica lo contrario ( salida completa ):

  $ openssl x509 -text -noout -in certs/domain.crt .... Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, ST = Oregon, L = Portland, O = Company Name, OU = Org, CN = openmpi-dockerregistry.local .... 

Otra opción que probé es acceder al logging directamente por IP. Seguí un manual [3] y agregué IP SAN al certificate. Además, también configuro CN = *. De modo que el certificate resultante ahora contiene el siguiente ( completo ):

  X509v3 extensions: X509v3 Subject Alternative Name: IP Address:<ip address> 

Pero ahora, cuando trato de sacar la image, recibo el siguiente post de error:

 $ docker run -it <ip>:443/hello-world Unable to find image '<ip>:443/hello-world:latest' locally docker: Error response from daemon: Get https://<ip>:443/v2/: x509: cannot validate certificate for <ip> because it doesn't contain any IP SANs. See 'docker run --help' 

Aunque el file /etc/docker/certs.d/<ip>:443/ca.crt contiene la dirección IP.

¿Podría ayudarme a encontrar una forma de extraer imágenes del logging local?

Actualizar

¿Cómo comienzo el logging de Docker?

 $ docker run -d \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_ADDR=0.0.0.0:$REGISTRY_PORT \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -p $REGISTRY_PORT:$REGISTRY_PORT \ --restart=always \ --name registry \ registry:2 
  1. https://docs.docker.com/registry/insecure/#use-self-signed-certificates
  2. https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry
  3. https://bowerstudios.com/node/1007

Creo que el problema es que no copió el certificate y la key en la carpeta /etc/docker/certs.d/ .

La carpeta debería verse así:

 /etc/docker/certs.d/ └── openmpi-dockerregistry.local:443 ├── client.cert ├── client.key └── ca.crt 

En mi caso no tuve ca.crt y funcionó bien.

Referencia: https://docs.docker.com/engine/security/certificates/


Implementé su configuration en mi máquina, todo funcionó bien después de copyr domain.key y domain.crt (y renombrarlos) en la carpeta /etc/docker/certs.d. La única diferencia es que utilicé openmpi-dockerregistry como dominio en lugar de openmpi-dockerregistry.local