ssl - 用于 Docker 的身份验证 URL 的 TLS 自签名证书

标签 ssl go docker certificate openshift-origin

我正在尝试登录您使用 oadm 工具构建的 Docker 注册表。我尝试使用 token 登录:

# docker login -u $(oc whoami) -e 'xxxx' -p $(oc whoami -t) 172.30.10.52:5000
Error response from daemon: no successful auth challenge for   
https://172.30.10.52:5000/v2/ - errors: [basic auth attempt to 
https://172.30.10.52:5000/v2/ realm "openshift" failed with status: 400 Bad 
Request]

查看日志,我发现问题是因为我的实例使用了自签名证书:

time="2017-01-10T00:58:42.913539516Z" level=error msg="error authorizing context: 
Get https://ld7-zko8s6q-ws:8443/oapi/v1/users/~: x509: 
certificate signed by unknown authority" 
go.version=go1.4.2 http.request.host="172.30.10.52:5000" 
http.request.id=3fa81975-3aa9-44d8-a6a8-c00ad360009c 
http.request.method=GET http.request.remoteaddr="10.1.0.1:49316" 
http.request.uri="/v2/" http.request.useragent="docker/1.10.3 go/go1.6.2 
git-commit/429be27-unsupported kernel/3.10.0-514.2.2.el7.x86_64 
os/linux arch/amd64" instance.id=2a23b229-2a0e-4734-83c4-38cb9c8a0e00 

如何让我的证书可信或关闭 TLS 验证?

最佳答案

你可以测试 insecure registry通过添加

DOCKER_OPTS="--insecure-registry myregistrydomain.com:5000"

到您的/etc/default/docker 文件或/etc/sysconfig/docker 文件

不过最好是add your self-signed certificate/etc/docker/certs.d/myregistrydomain.com:5000/ca.crt。并重启你的 Docker 守护进程。
这样,它就会信任您的证书。

请注意,Openshift 源有一个 currently open issue 1753 “需要为私有(private) docker 注册表注册证书的机制” 另请参阅“Can not pull image from remote node #6228”,指的是 Openshift 官方文档“Securing and Exposing the Registry”。

关于ssl - 用于 Docker 的身份验证 URL 的 TLS 自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559601/

相关文章:

ssl - 我可以使用代理服务器来处理 SSL 吗?

ssl - 我可以将主机的多个替代证书放在一个证书文件中吗?

c++ - 如何知道 Boost asio 中 SSL 套接字的状态

pointers - 如何在 Go 中将服务指针从一个包传递到另一个包?

docker - Docker群使用本地服务实例

ssl - 未知权威机构签署的 docker x509 证书

oop - Go 中的接口(interface)组合

go - 带有错误的Golang错误包装/解包&&类型检查。is()

docker - 错误: Link is not supported in GitLab CI/CD Pipeline when Executing an Image as an Container

docker - 从守护进程配置文件设置 docker 容器环境