共计 1692 个字符,预计需要花费 5 分钟才能阅读完成。
最近在做 Docker 相关的东西,发现只要一 pull 镜像,就出现如下的 ERROR
x509: certificate signed by unknown authority.
调查后发现,是公司 IT 把 https 证书换成了公司的证书(目的大家自己猜)。
解决思路:把替换后的证书直接用 openssl 拉下来,然后加入到系统(我是 Ubuntu)系统证书中,然后使用 update-ca-certificates 更新,最后重启 docker 服务,成功!!
方式 1:
$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > /usr/local/share/ca-certificates/cloudfront.crt
上面的 dseasb33srnrn.cloudfront.net 是 docker 提示证书错误的网址。把这个网址替换成你的网站,同时把改下你要生成的证书名字就 OK。
然后重启 docker deamon
$ sudo service docker restart
方式 2:
$ echo -n | openssl s_client -showcerts -connect dseasb33srnrn.cloudfront.net:443 2>/dev/null | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ >> /etc/ssl/certs/ca-certificates.crt
$ update-ca-certificates
Updating certificates in /etc/ssl/certs… 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d….
Adding debian:cloudfront.pem
done.
done.
同时替换上面的 dseasb33srnrn.cloudfront.net 就好了.
然后重启 docker
$ sudo service docker restart
结语:
我上面的方式之所以可以搞定大多数由于公司 IT 部门替换 https 证书造成的错误,是因为很多程序是使用系统默认的证书(路径)。
对于一些特殊的程序,比如 python pip, 不使用系统默认的证书,而是使用自己的路径,可以强制它使用 * 方式 2 * 生成的证书。
更多 Docker 相关教程见以下内容:
Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm
Ubuntu 14.04 安装 Docker http://www.linuxidc.com/linux/2014-08/105656.htm
Ubuntu 使用 VNC 运行基于 Docker 的桌面系统 http://www.linuxidc.com/Linux/2015-08/121170.htm
阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm
Ubuntu 15.04 下安装 Docker http://www.linuxidc.com/Linux/2015-07/120444.htm
在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm
在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm
Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132693.htm