2016-01-09 36 views
5

这里描述我设置了一个域名注册表:设置了Letsencrypt证书泊坞窗注册表

https://docs.docker.com/registry/deploying/

我生成docker.mydomain.com证书并使用他们的命令启动泊坞窗我的服务器:

docker run -d -p 5000:5000 --restart=always --name registry \ 
    -v `pwd`/certs:/certs \ 
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ 
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ 
    registry:2 

我已经开始了码头工人,并指出证书我获得使用letsencrypt(https://letsencrypt.org/)。

现在,当我浏览到https://docker.mydomain.com:5000/v2/时,我将获得一个带有{{}的页面,并带有绿色锁定(成功的安全页面请求)。

但是,当我尝试从不同的服务器我看到在注册表泊坞窗一个错误做了docker login docker.mydomain.com:5000

TLS handshake error from xxx.xxx.xxx.xxx:51773: remote error: bad certificate 

我试着在设置的证书,而且像得到错误的一些不同的变化:

remote error: unknown certificate authority 

我缺少什么?

回答

4

泊坞窗接缝不支持SNIhttps://github.com/docker/docker/issues/9969

更新:多克,现在应该支持SNI。

这意味着,在tls事务期间连接到服务器时,docker客户端不指定域名,因此您的服务器显示默认证书。

解决方案可能是将您的服务器的默认证书更改为适用于docker域的证书。

本网站仅适用于支持SNI的浏览器。

要检查您的(子)域是否与不支持SNI的客户端一起工作,您可以使用ssllabs.com/ssltest:如果您不想看到消息“此网站仅适用于支持SNI的浏览器”,则它会起作用。

+0

我的服务器在www.mydomain.com上运行ssl,因此我需要指向该证书,然后将docker设置在另一个端口上,例如www.mydomain.com:5000? – Oli

+0

这应该工作。你能证实吗? – Tom

+0

现在就开始工作了,但根据你的链接和评论,子域名应该也能工作?无论如何感谢回答,我现在可以继续。 – Oli