更换harbor镜像仓库的证书

harbor仓库原本的ssl证书过期了,让小伙伴帮忙获取了一个证书,到手后不是原本简单的一个.pem+一个.key,而是包含了一堆东西:

  • ca.cer
  • fullchain.cer
  • mydomain.com.cer
  • mydomain.com.conf
  • mydomain.com.csr
  • mydomain.com.csr.conf
  • mydomain.com.key

其中.cer=.pem,格式是一样的,这个签发机构有一套证书链,所以最后要使用的是这个fullchain.cermydomain.com.key

首先找到harbor的配置文件,我的位于 /etc/harbor/install/harbor.yml ,修改其中的内容

https:
  port: 443
  certificate: /etc/harbor/fullchain.cer # 注意修改为你的cer文件路径
  private_key: /etc/harbor/mydomain.com.key # 注意修改为你的key文件路径

但除此之外,还有一个负责代理的nginx,还需要修改这个nginx的server.crt。不然nginx容器起来一直报错。**当然如果你的nginx不报错,可以不修改它。**因为我也不知道它具体是怎么使用的,为什么之前换证书就不用修改= =
通过docker inspect nginx可以看到它挂载了一个目录:

        "Mounts": [
            {
                "Type": "bind",
                "Source": "/data/harbor/secret/cert",
                "Destination": "/etc/cert",
                "Mode": "z",
                "RW": true,
                "Propagation": "rprivate"
            },

切换到 上方显示的 /data/harbor/secret/cert 目录后,下边有两个已存在的文件:

  • server.crt
  • server.key
    将server.crt中的内容替换为fullchain.cer,一定不要更改crt这个后缀!实测改后缀了就会显示读不到server.crt。应该是因为哪里的引用配置写的是server.crt,但我已经懒得找了,就直接替换内容。
    server.key则替换为mydomain.com.key,跟上面一样。
    因为我的harbor是docker-compose部署的,所以切换回 /etc/harbor/install/harbor 目录下,此处有docker-compose.yml,因此执行 docker-compose downdocker-compose up -d 重启harbor,让其使用新证书。
    参考这个文章更简洁:harbor更新证书文件

踩坑1 使用了mydomain.com.cer会导致证书不被信任

对于这种签发证书,如果你没有使用fullchain.cer,那么docker pull时还是会报错:
x509: certificate signed by unknown authority
网上找到了一片文章:https://ithelp.ithome.com.tw/articles/10249640
可以看到他使用的就是 certificate: /etc/letsencrypt/live/registry.hwchiu.com/fullchain.pem
这个fullchain。
为什么呢?有一篇文章详解了这些.cer都是什么:letsEncrypt证书生成的4个文件都是什么用途?
因此我这种情况将certificate改为fullchain.cer(harbor.yml和nginx都改)即可满足权威机构签发证书的验证需求。

argo踩坑,未验证的证书会导致报错

报错如下:
failed to look-up entrypoint/cmd for image “xxxx:latest”, you must either explicitly specify the command, or list the image’s command in the index: https://argoproj.github.io/argo-workflows/workflow-execut
但是这个镜像之前一直跑的好好的,也不存在没写entrypoint的问题。搜索找到了一篇报错相似的issue: https://github.com/argoproj/argo-workflows/issues/9139
看标题就说当使用未验证的证书时会报这个错。
所以也不管他们怎么解决的了,把证书调整之后果然argo就不报这个错误了。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐