2016-01-09 35 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