x509:由未知权限签名的证书 - 包括docker和github

use*_*553 20 github x509 docker

docker build -t oreng/iojs .

INFO[0000] Get https://index.docker.io/v1/repositories/library/iojs/images: x509: certificate signed by unknown authority. 
Run Code Online (Sandbox Code Playgroud)

我的Dockerfile是

FROM iojs:latest
RUN useradd -ms /bin/bash developer
WORKDIR /home/developer
USER developer
Run Code Online (Sandbox Code Playgroud)

另外hub create(使用https://github.com/github/hub)

Post https://api.github.com/user/repos: x509: certificate signed by unknown authority 
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 16

如上所述crypto/x509/root_unix.go,Go(这是Docker使用的)将检查CA证书

"/etc/ssl/certs/ca-certificates.crt",     // Debian/Ubuntu/Gentoo etc.
"/etc/pki/tls/certs/ca-bundle.crt",       // Fedora/RHEL
"/etc/ssl/ca-bundle.pem",                 // OpenSUSE
"/etc/ssl/cert.pem",                      // OpenBSD
"/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly
"/etc/pki/tls/cacert.pem",                // OpenELEC
"/etc/certs/ca-certificates.crt",         // Solaris 11.2+
Run Code Online (Sandbox Code Playgroud)

确保这些文件可用且未损坏.

CDN也可能存在零星问题,如本评论所述:

因为它现在有效:+1 :. 它必须是亚马逊的优势

最后一个帖子还包括以下检查:

报告问题的用户要么没有这些文件,要么那些文件不包含rapidssl证书.
我们可以要求他们将这些文件发送给我们并检查是否包含证书.
用户也可以试试这个:

openssl s_client -showcerts -verify 32 -connect index.docker.io:443
Run Code Online (Sandbox Code Playgroud)

如果失败,则证书丢失.

关于GitHub,请注意目前正在进行大规模的DDoS攻击,这可能会在证书问题旁边产生其他副作用.


Ale*_*nen 13

在Ubuntu 16.04中,也应该与其他版本一起使用

在/ usr/local/share/ca-certificates下创建/复制.crt;

sudo cp installaiton/certificates/docker-registry.crt 
 /usr/local/share/ca-certificates
Run Code Online (Sandbox Code Playgroud)

然后运行

sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

这将在"/etc/ssl/certs/ca-certificates.crt"下添加证书,然后重新启动docker

sudo systemctl daemon-reload
sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)


小智 8

嗯,我面临着类似的问题。这就是我所在的地方:

我的场景:在 Oracle VB 上构建 Ubuntu VM,并开始构建我的 K8s 集群。docker 无法拉取 calico 镜像。抛出以下错误:

无法拉取映像“docker.io/calico/cni:v3.18.2”:rpc 错误 [...] INFO[0009] 获取https://registry-1.docker.io/v2:x509:由未知签名的证书权威。

然后我尝试对默认注册表执行简单的“docker 登录”,这导致我遇到相同的错误。

这些是一整天的阅读和学习的成果:

  1. 您可以使用自签名证书
  2. 您可以从官方网站获取CA证书

说实话,以上教训都没有让我找到尤里卡!

所以,这就是我所做的

我从实际注册表下载了证书,并将其添加/etc/docker/certs/[registry_domain_name]到服务器上的 SSL CA 证书中。你猜怎么着,我确实给出了结果。因此,以下是详细步骤:

步骤1:openssl s_client -showcerts -connect ${DOMAIN}:${PORT}</dev/null2>/dev/null|openssl x509 -outform PEM >ca.crt

我跑了什么:openssl s_client -showcerts -connect registry-1.docker.io:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >ca.crt

步骤2:sudo cp ca.crt /etc/docker/certs.d/${DOMAIN}/ca.crt

我跑了什么:sudo cp ca.crt /etc/docker/certs.d/registry-1.docker.io/ca.crt

步骤3cat ca.crt | sudo tee -a /etc/ssl/certs/ca-certificates.crt

步骤4sudo service docker restart

博客致谢: https ://rancher.com/docs/rancher/v1.6/en/environments/registries/