我按照 Docker 的建议为我的 docker 客户端和守护进程生成了证书:https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl
但是...我正在使用 Sonatype Nexus 3 作为我的私有(private) docker 注册表。
我有一个正面的 NGinX。
我想使用自签名证书设置 NGinx,以便能够将 Nexus 用作注册表。
基本上,我有 NGinx 的设置:
ssl_certificate /home/AAA/certificates/adgroupe.priv/server-cert.pem;
ssl_certificate_key /home/AAA/certificates/adgroupe.priv/server-key.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
这 2 个证书是使用 Docker 文档(上面的链接)生成的证书。
然后我可以使用 keytool 将我的 server.cert 添加到我的 keystore ,但是我怎样才能让 Maven 和 Docker 都信任该证书?我的意思是,没有人信任我的 CA,因为我自己生成了它...
最佳答案
我使用的是基于 Debian 的操作系统,我就是这样做的。 在您的客户端和服务器上,您只需获取证书文件并将其添加到 ca 证书中即可。
root@test:~/certs mkdir /usr/share/ca-certificates/myRegistry.example.com
root@test:~/certs cp certificate.crt /usr/share/ca-certificates/myRegistry.example.com/
root@test:~/certs echo "myRegistry.example.com/certificate.crt" >> /etc/ca-certificates.conf
root@test:~/certs update-ca-certificates
Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
# restart docker to refresh trusted CA
root@test:~/certs systemctl restart docker
您将只能使用您提供的通用名称(对我来说是):myRegistry.example.com 进行访问。 因为我在创建证书时指定了它
Common Name (e.g. server FQDN or YOUR name) []:myRegistry.example.com
希望对你有帮助
关于maven - 在带有 HTTPS 的 NGinx 后面使用 Maven 和 Docker + Nexus 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37443523/