一个不安全的dockerpipe理员registry可以得到一个CA签名证书,以便客户自动信任它吗?

目前,我已经以如下方式build立了一个registry:

docker run -d \ -p 10.0.1.4:443:5000 \ --name registry \ -v `pwd`/certs/:/certs \ -v `pwd`/registry:/var/lib/registry \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/certificate.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/private.key \ registry:latest 

使用Docker版本17.06.2-ce,构buildcec0b72

我从Let's Encrypt获得了我的certificate.crt,private.key和ca_bundle.crt。 在nginx服务器上使用这些证书时,我能够build立https连接,而不必显式信任客户端机器/浏览器上的证书。

是否可以使用类似于通过https访问的CAauthentication网站的Dockerregistry来设置用户体验?浏览器/机器在哪里信任根CA以及包括我的证书在内的根CA?

注意:

我当然可以在客户docker文件中指定证书,如本教程所述: https : //docs.docker.com/registry/insecure/#use-self-signed-certificates 。 但是,这不是我的需求的适当解决scheme。

curl -v https://docks.behar.cloud/v2/输出curl -v https://docks.behar.cloud/v2/

 * Trying 10.0.1.4... * TCP_NODELAY set * Connected to docks.behar.cloud (10.0.1.4) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 * Server certificate: docks.behar.cloud * Server certificate: Let's Encrypt Authority X3 * Server certificate: DST Root CA X3 > GET /v2/ HTTP/1.1 > Host: docks.behar.cloud > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 2 < Content-Type: application/json; charset=utf-8 < Docker-Distribution-Api-Version: registry/2.0 < X-Content-Type-Options: nosniff < Date: Sun, 10 Sep 2017 23:05:01 GMT < * Connection #0 to host docks.behar.cloud left intact 

简短的回答:是的。 我的问题是由我的操作系统没有build立信任我的SSL证书签署的根证书。 这可能是由于我的操作系统的年龄。 有关更多信息,请参阅Matt的答案。

Docker通常会使用操作系统提供的CA捆绑软件,所以由受信任的根签名的证书应该没有额外的configuration。

让我们encryption证书由IdentTrust根证书 (DST根CA X3) 交叉签名 ,以便大多数CA捆绑应该已经信任他们的证书。 让我们encryption根证书 (ISRG根X1)也是分布式的,但不会像现在这样广泛。

Docker 1.13+将使用主机系统CA软件包来validation证书。 在1.13之前,如果你已经安装了一个自定义的根证书,这可能不会发生 。 所以如果你使用curl而没有任何TLS警告,那么docker命令也应该是一样的。

要让DTR识别您需要编辑configuration文件的证书,以便正确指定您的证书。 DTR接受并具有LetsEncrypt Certs特殊参数。 他们也有特定的要求 。 您将需要创build一个configuration文件并安装相应的目录,然后就不应该有insecure-registry错误和无法识别的证书的问题。

 ... http: addr: localhost:5000 prefix: /my/nested/registry/ host: https://myregistryaddress.org:5000 secret: asecretforlocaldevelopment relativeurls: false tls: certificate: /path/to/x509/public key: /path/to/x509/private clientcas: - /path/to/ca.pem - /path/to/another/ca.pem letsencrypt: cachefile: /path/to/cache-file email: emailused@letsencrypt.com ... 
Interesting Posts