最近在作Docker相关的东西,发现只要一pull镜像,就出现以下的ERRORpython
x509: certificate signed by unknown authority.docker
调查后发现,是公司IT把https证书换成了公司的证书(目的你们本身猜)。网站
解决思路:把替换后的证书直接用openssl拉下来,而后加入到系统(我是Ubuntu)系统证书中,而后使用update-ca-certificates更新,最后重启docker服务,成功!!spa
$ 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
$ 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提示证书错误的网址。把这个网址替换成你的网站,同时把改下你要生成的证书名字就OK。.net
而后重启docker deamonrest
$ sudo service docker restart
$ 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
同时替换上面的dseasb33srnrn.cloudfront.net就行了.code
而后重启dockerblog
$ sudo service docker restart
我上面的方式之因此能够搞定大多数因为公司IT部门替换https证书形成的错误,是由于不少程序是使用系统默认的证书(路径)。ip
对于一些特殊的程序,好比python pip,不使用系统默认的证书,而是使用本身的路径,能够强制它使用*方式2*生成的证书。ssl