出于测试目的,我使用自签名证书部署了一个不安全的nexus注册表。
1.我已经使用这个cheat-sheet创建了rootCA、证书和签名。
1.我已经更新了主机中的证书
root@master:~/cert2# sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
1.我已经将证书添加到nginx
,它充当nexus
的代理:
root@mec5g:~/minidevops# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
720b50c77f24 nginx:1.18.0 "/docker-entrypoint.…" 47 minutes ago Up 47 minutes 80/tcp, 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp, 0.0.0.0:8585->8081/tcp, :::8585->8081/tcp, 0.0.0.0:8586->8082/tcp, :::8586->8082/tcp minidevops_nginx_1
e6712602b614 sonatype/nexus3:3.37.0 "sh -c ${SONATYPE_DI…" 47 minutes ago Up 47 minutes 0.0.0.0:32768->8081/tcp, :::32768->8081/tcp
minidevops_nexus_1
nexus
可以像helm repository
和docker registry
一样正常运行:
第一节第一节第一节第一节第一次
1.将证书添加到ArgoCD
:
helm repository
包括:
1.应用程序已部署:
但是,“证书由未知机构签名”错误仍然存在。
有线索吗?
请注意,此问题与已发布的另一个问题相关,但不相同:questions/75898641
更新2023-04-01
我已经按照建议的步骤操作了,但错误仍然存在:
1.我已经将pem转换为crt扩展:openssl x509 -outform der -in ca-cert.pem -out ca-cert.crt
1.我还更新了CA证书:
usuario@mec5g:~/cert3$ sudo dpkg-reconfigure ca-certificates
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
rehash: warning: skipping ca-cert.pem,it does not contain exactly one certificate or CRL
1 added, 0 removed; done.
Processing triggers for ca-certificates (20211016ubuntu0.20.04.1) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
1.我试着测试证书,得到了这个答案(我已经删除了其余的加密材料):
root@master:~/cert3# openssl s_client -connect 10.63.27.49:8585 -showcerts </dev/null
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 CN = 10.63.27.49
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = 10.63.27.49
verify error:num=21:unable to verify the first certificate
verify return:1
...
...
...
更新2023-04-02.1
1.我遵循了docker documentation中关于使用自签名证书的建议:
sudo mkdir -p /etc/docker/certs.d/10.63.27.49:6000/
sudo cp ca-cert.crt /etc/docker/certs.d/10.63.27.49\:6000/ca.crt
1.我现在可以在Nexus注册表中登录Docker:
usuario@mec5g:~/cert2$ docker login 10.63.27.49:6000 -u xxx -p xxx
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/usuario/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
- ArgoCD中的错误现在不同了:
更新2023-04-02.2
1.我在argocd命名空间中添加了一个secret:
root@master:~# kubectl create secret docker-registry regcred -n argocd --docker-username=xxx --docker-password=xxx --docker-server=10.63.27.49:6000
secret/regcred created
1.我在helmchart部署文件中添加了一个标记:
spec:
imagePullSecrets:
- name: regcred
错误仍然存在。
2条答案
按热度按时间bprjcwpo1#
如果证书是自签名的,则需要将其添加到主机的根CA。
如果你不知道怎么做,看看这里:https://unix.stackexchange.com/questions/90450/adding-a-self-signed-certificate-to-the-trusted-list
6ss1mwsb2#
根据ArgoCD的建议:issue-6048:
“Argo CD使用一种证书固定-这意味着,每个证书都固定到存储库服务器的名称,并且必须相应地配置。配置的证书中的CN是不相关的,只要它可以用来验证服务器的证书(例如,当您提供CA证书来验证TLS连接时)。相关的是远程服务器提供的证书-这需要使用实际标识服务器的SAN进行正确设置(例如,通过SAN扩展DNS:)。其中一个SAN条目必须与用于连接的服务器的名称匹配。
1.我使用了详细的SAN来创建自签名证书。例如:
subjectAltName=DNS:10.63.27.49,DNS:localhost,DNS:mec5g.es,DNS:master,IP:10.63.27.49,IP:127.0.0.1,IP:10.5.0.2"
1.我已将证书添加到/ca-certificates文件夹。例如:
1.我已经将根CA添加到docker/cert.d/文件夹。例如:
1.我修改了
daemon.json
文件。例如:1.我在ArgoCD命名空间中添加了一个secret。例如:
1.我在helmchart部署文件中添加了一个标签。例如: