ree*_*een 18 linux ssl rhel docker
我正在尝试运行以下docker命令:
docker run -i -t ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Unable to find image 'ubuntu' (tag: latest) locally
Pulling repository ubuntu
2013/11/28 14:00:24 Get https://index.docker.io/v1/images/ubuntu/ancestry: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)
我知道我们公司会为https请求动态替换SSL证书.
我试图通过将其放入以下内容来信任我们公司的CA证书:
/etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)
和
/etc/pki/tls/cert.pem
Run Code Online (Sandbox Code Playgroud)
但它仍然无法正常工作.
有任何想法吗?
jpe*_*zzo 13
根据http://golang.org/src/pkg/crypto/x509/root_unix.go,您应该将证书附加到以下之一:
找到系统中存在的那个,并将证书附加到其上.
(并且在升级包含该文件的包时,请准备好再次执行此操作...)
我希望有更好的方法,但这是我迄今为止唯一找到的方法:-)
Ser*_*eev 13
@ jpetazzo的答案是完全正确的,但有一个更好的方法来做同样的事情(没有手动编辑ca-bundle文件):
在CentOS上:
sudo cp yourcert.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
sudo service docker restart
Run Code Online (Sandbox Code Playgroud)在Debian上:
sudo cp yourcert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
sudo service docker restart
Run Code Online (Sandbox Code Playgroud)请注意,重启docker守护进程是必要的!
要将docker配置为使用代理系统,首先需要将HTTPS_PROXY/HTTP_PROXY环境变量添加到docker sysconfig文件中.但是,根据您是否使用init.d或服务工具,您需要添加"export"语句.作为一种解决方法,您只需在docker的sysconfig文件中添加两个变体:
/etc/sysconfig/docker
HTTPS_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
HTTP_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
export HTTP_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
export HTTPS_PROXY="https://<user>:<password>@<proxy-host>:<proxy-port>"
Run Code Online (Sandbox Code Playgroud)
要使docker使用ssl拦截代理,您必须将代理根证书添加到系统信任库.
对于CentOS,将文件复制到/ etc/pki/ca-trust/source/anchors /并更新ca信任存储.之后重新启动docker服务.如果您的代理使用NTLM身份验证 - 则必须使用cntlm等中间代理. 这篇博文详细解释了它