harbor镜像仓库更换证书到底要改什么?argo报错竟也与证书有关(踩坑记录)
更换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.cer和 mydomain.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 down和docker-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就不报这个错误了。
更多推荐
所有评论(0)