Docker Registry自签名证书指纹不符问题排查及配置求助
Docker Registry自签名证书指纹不一致问题排查与解决
问题原因
- 证书路径配置错误:你通过OpenSSL生成的证书文件是
docker-reg_pri.crt,但部署Registry容器时,环境变量REGISTRY_HTTP_TLS_CERTIFICATE指定的是/certs/docker-reg_pub.crt。如果服务器证书目录中不存在该文件,或该文件是其他无关证书,就会导致Registry加载错误的证书,出现指纹不一致的情况。 - 证书文件混淆:挂载的
/docker/certificates目录中可能存在旧证书或错误命名的文件,Registry加载了错误的证书资源。
解决步骤
1. 核对服务器证书目录文件
先检查服务器证书目录中的文件,确认资源正确性:
ls -l /docker/certificates/
确保目录下存在你生成的docker-reg_pri.crt(证书文件)和docker-reg_pri.key(私钥文件),且无其他混淆的证书文件。
2. 修正Registry容器配置
停止并删除当前运行的Registry容器:
sudo docker stop registry sudo docker rm registry
重新启动容器,修正证书路径的环境变量(将证书路径改为实际生成的docker-reg_pri.crt):
sudo docker run -d \ --restart=always \ --name registry \ -v "/docker/data:/var/lib/registry" \ -v "/docker/certificates:/certs" \ -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker-reg_pri.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/docker-reg_pri.key \ -p 443:443 registry:2
3. 验证证书加载情况
查看容器日志,确认无TLS相关错误:
sudo docker logs registry
在Windows客户端重新访问https://server/v2/,导出浏览器中的证书,与服务器上的docker-reg_pri.crt对比指纹,确认两者一致。
4. 配置Windows客户端信任证书(可选)
为避免Docker客户端拉取镜像时出现证书不信任错误,将自签名证书导入Windows信任存储:
- 将服务器上的
docker-reg_pri.crt复制到Windows客户端 - 双击证书文件,选择安装证书
- 选择本地计算机,点击下一步
- 选择将所有证书放入下列存储,点击浏览,选择受信任的根证书颁发机构
- 完成安装后,重启Docker服务和浏览器
内容的提问来源于stack exchange,提问作者blue shell
相关产品推荐
相关产品推荐

