自建 harbor 证书问题

2021-12-22 14:09:01 +08:00
 pydiff

刚刚看到有人问 gcr.io 的镜像问题就想起来以前的没解决的问题。 就是我们自建 harbor 的时候,如果启用了 https,想要用域名访问的时候就要么用证书,要么在 deamon.json 中增加 insecurity 项。

我之前是用 acme 申请的免费证书,直接在 nginx 上配置证书,如果我用命令 docker pull xxx.domian.com/image:latest拉取镜像的时候,会报 x509 错误,如: x509: certificate signed by unknown authority;如果我用 openssl 生成自签证书,想要正常用的话,也需要把证书手动复制到每台机器上 /etc/docker/cert.d目录下。

而我看比如阿里云他们的镜像源也不需要配置证书就可以直接拉取了,还有我也见过公司合作的厂商也有些的 docker 仓库的域名也不需要特别配置就可以直接拉取,那么他们用的证书是什么样的证书,为啥可以直接通过 docker daemon 的验证,这种证书有免费的吗?

因为我对这块也不熟,查了谷歌跟百度也没有找到答案,所以过来请教一下各位大佬。

2543 次点击
所在节点    Kubernetes
13 条回复
southwolf
2021-12-22 14:19:05 +08:00
你先确认一下证书申请吧..如果是 ACME 搞的证书 绑好了域名应该不会有问题
pydiff
2021-12-22 14:23:06 +08:00
@southwolf 证书没问题了,直接在页面上访问 harbor,证书也是显示正常的,就是用 docker 拉取镜像时报 x509 错误.同时这个证书用在给其他服务也是正常的
ooxxcc
2021-12-22 14:45:16 +08:00
没有配置中间证书
hxsf
2021-12-22 14:55:07 +08:00
@pydiff #2 如果仅仅是 docker pull 报证书错的情况,可能是运行 docker 的那台机器上的根证书没更新 or 证书链有问题。
一般来说,Linux 上根证书的包叫 ca-certificates , 可以使用包管理更新。然后用 update-ca-trust 命令更新。
然后 docker pull 其实是发命令给 dockerd ,实际的 pull 动作是 dockerd 发起的,你可能还需要重启一下 dockerd 。
pydiff
2021-12-22 15:15:41 +08:00
@ooxxcc 中间证书是啥,可以详细点吗
pydiff
2021-12-22 16:04:20 +08:00
@ooxxcc 大佬,感谢,解决了,确实是中间证书问题,之前还困扰了好久,好奇别人怎么可以自己搞得不行的
Illusionary
2021-12-22 16:05:15 +08:00
harbor.yml 里面配置好就行了,没那么多乱七八糟
https:
port: 443
certificate: /data/harbor/cert/google.com.pem
private_key: /data/harbor/cert/google.com.key
pydiff
2021-12-22 16:06:58 +08:00
@Illusionary 我之前这样配置也是不行的
pydiff
2021-12-22 16:18:43 +08:00
@Illusionary 再问下,就是 harbor 能不能跟 nexus 一样,我代理 dockerhub 仓库的镜像不用加多一个仓库名,比如 nexus 就可以
` docker pull xxx.domain.com/redis:latest`,但是我目前用 harbor 就必须要加多一个项目名,比如:
` docker pull xxx.domain.com/proxy/library/redis:latest`,其中 proxy 就是我必须在 harbor 中必须要建的项目,还可以省略多一个个 library
liuhan907
2021-12-22 20:55:27 +08:00
@pydiff 我记得 harbor 不能直接代理,必须得前缀。所以我们后来换 Nexus 了
stevenhawking
2021-12-23 04:01:31 +08:00
pydiff
2021-12-23 08:27:47 +08:00
@stevenhawking ok ,我试试,谢谢哈
ljf
2021-12-26 20:17:49 +08:00
云服务商的 harbor 里面配置的证书,是通过公共机构签发的可信的证书,所以 docker 登陆和拉取的时候会自动信任,因为 ca 是可信机构。如果是自签的 harbor 证书,那么 ca 是不可信的,因此需要把 ca 证书加到每台客户端的 /etc/docker/cert.d 目录下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823742

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX