我已在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/
的位置。仍然无法正常工作。
答案 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