Nexus私有docker pull映像因x509失败:无法验证证书错误

时间:2019-04-09 09:10:14

标签: docker centos7 nexus3

我已在CentOS-7.6,Nginx反向代理和配置为通过Https访问的SSL自签名证书上安装了 Nexus-3.15.2-01 。 https访问可以在浏览器上正常工作。

Nexus Docker私有存储库https方法已激活。

从我的Docker主机上,当我尝试从nexus私有docker集线器服务器中提取docker镜像时,它在下面失败了。

docker pull 101.102.103.104:5051/docker-image-14:1
Error response from daemon: Get https:// 101.102.103.104:5051/v2/: x509: cannot validate certificate for 101.102.103.104 because it doesn't contain any IP SANs

我已将我的nexus.crt文件移至Docker主机/etc/docker/certs.d/101.102.103.104:5051/的位置。仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

在Docker注册表上,必须按照documentation中所述,使用subjectAltName编译证书:

您可以尝试这样创建证书:

openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=101.102.103.104" -sha256 -new -key server-key.pem -out server.csr
echo subjectAltName = DNS:101.102.103.104,IP:101.102.103.104,IP:127.0.0.1 >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

然后您可以使用以下命令验证证书中是否存在使用者替代名称(SAN):

openssl x509 -in server-cert.pem -text -noout

现在再次尝试拉。不要忘记将新证书放入/etc/docker/certs.d/101.102.103.104:5051/
如果在此之后出现新错误 x509: certificate signed by unknown authority
/etc/default/docker中,您需要指定docker选项: DOCKER_OPTS="--insecure-registry 101.102.103.104:5051"

然后重新启动守护程序(如果不允许用户启动docker服务,请添加sudo):

$ [sudo] service docker restart