如何在Windows的WSL2(Ubuntu)环境中使用自签名证书登录私有Docker Registry?
如何在Windows的WSL2(Ubuntu)环境中使用自签名证书登录私有Docker Registry?
我之前也踩过这个坑!Mac上把证书丢钥匙串里就搞定了,但WSL2因为是Windows和Linux的混合环境,得两边都配置到位才行。分两种常见场景给你说解决方案,你对应自己的情况来操作:
场景一:用Docker Desktop和WSL2集成(大部分用户都是这种)
这种情况下,WSL里的Docker CLI其实是连接到Windows上的Docker Desktop daemon,所以两边的证书配置都不能少:
先搞定Windows侧的Docker Desktop信任证书
- 打开
certlm.msc(本地计算机证书管理器),找到「受信任的根证书颁发机构」→「证书」,右键导入你的自签名证书,一路按提示完成导入。 - 重启Docker Desktop,确保它加载了新的证书配置。
- 打开
再配置WSL2 Ubuntu的系统证书
- 把你的
.crt证书文件从Windows复制到WSL里,比如证书在Windows的C:\Users\你的用户名\certs\my-registry.crt,在WSL终端里执行:cp /mnt/c/Users/你的用户名/certs/my-registry.crt /usr/local/share/ca-certificates/ - 更新Ubuntu的系统证书缓存:
sudo update-ca-certificates - 这一步是让WSL里的CLI工具(比如curl)信任证书,避免登录时的TLS验证报错。
- 把你的
最后确认Docker Desktop的WSL集成开启
- 打开Docker Desktop设置,转到「Resources」→「WSL Integration」,勾选你正在用的Ubuntu发行版,保存设置后重启Docker Desktop。
场景二:WSL2里独立安装了Docker(没用到Docker Desktop)
如果是在WSL2的Ubuntu里单独装了Docker服务,那直接在Linux环境里配置证书即可:
创建Docker证书目录
假设你的私有Registry地址是my-registry:5000,先创建对应的证书存放目录:sudo mkdir -p /etc/docker/certs.d/my-registry:5000复制并重命名证书
把你的自签名证书复制到这个目录下,并重命名为ca.crt(Docker会自动识别这个标准文件名):sudo cp /path/to/your/my-registry.crt /etc/docker/certs.d/my-registry:5000/ca.crt重启Docker服务
让Docker加载新的证书配置:sudo systemctl restart docker
排查小技巧
- 先验证证书是否正确:用
openssl x509 -in /path/to/your/cert.crt -text -noout查看证书内容,确认里面的域名/IP和你的Registry地址完全匹配。 - 如果还是报错,试试用
curl -v https://my-registry:5000/v2/测试,看是系统层面还是Docker层面的证书信任问题。
备注:内容来源于stack exchange,提问作者Jackie




