由于根证书过期,GitHub-runner 无法克隆



我在 gitlab ci 上克隆时遇到此错误:

unable to access 'https://gitlab-ci-token:[secure]@git.mydomain.com/mydomain/api.git/': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none.

我的根 CA 已于今天 30 日过期,因此必须已从我的钥匙串中删除。

我已经升级了我的证书(debian(,除了这个错误在我的 dockerizedgitlab-runner中没有消失之外,一切似乎都很好。

我该如何解决它?

这是服务器端的问题,需要通过替换 CA 证书链来修复。

因为Sectigo知道这个根证书很快就会过期,几年前,他们创建了一个新的根证书,并在所有主要的浏览器供应商和操作系统制造商处注册。 但是,由于许多较旧的系统不升级其证书,因此此新的根 CA 由较旧的 CA 签名,此过程称为交叉签名。 这允许人们使用新的根来颁发证书,同时保持与旧系统兼容。

今天互联网上的任何系统都无法再处理遗留根,因为它现在已经过期了,所以再使用它没有任何好处。

一些 TLS 库可以确定证书链接到受信任的根,并忽略额外的过期根证书,但有些库不能。 因此,证书链中具有旧的 AddTrust 外部根 CA 证书这一事实可能会破坏其中一些 TLS 库,这就是这里发生的情况。

Sectigo有关于这个问题的文档。 您希望删除AddTrust CA证书,并确保您正在使用的UserTrust或COMODO根是自签名的。 如果您使用的是 Debian 或 Ubuntu 系统,您可以在/etc/ssl/certs中找到合适的根证书。

更好的是,您可以完全删除根证书并仅包含中间证书,因为在创建 TLS 连接时实际上并不需要根证书,因为客户端必须已经拥有它。

在 debian 9 中,我通过删除以下证书解决了问题。

sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
sudo update-ca-certificates

最新更新