我正在尝试根据以下文档设置私人docker注册表https://docs.docker.com/registry/deploying/#running-a-domain-registry。
我使用 StartSSL 作为证书颁发者,下载了他们的中间 crt 并将它们与我的客户端证书结合起来:
cd certs
cat sca.server3.crt ca.crt client.pem > client.crt
使用以下命令启动注册表
docker run --rm -p 5000:5000 --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/client.crt -e REGISTRY_HTTP_TLS_KEY=/certs/private.key registry:2
注册表抱怨私钥/公钥不匹配。但是,同样的证书 + 私钥在其他 Apache 站点中可以正常工作。在将中间 crt 添加到 client.crt 之前,我没有收到该错误
time="2016-07-18T11:34:19Z" level=fatal msg="crypto/tls: private key does not match public key"
由于注册表在内部网(而非公共互联网)内运行,因此我不想设置 apache/nginx 仅作为代理。
旁注:我正在使用 Docker Mac(Docker 版本 1.12.0-rc4,构建 e4a0dbc,实验性的)。
答案1
我记得命令如何组合你的证书非常重要。
尝试自下而上的方法:
cat domain.crt intermediate-certificates.pem ca.pem > chained-domain.crt