GitLab运行-无法信任自签名证书

时间:2019-02-10 21:20:20

标签: git ssl gitlab gitlab-ci-runner

运行GitLab CI Runner时,我必须指定

  

environment = [“ GIT_SSL_NO_VERIFY = true”]“

没有它,我从GitLab CI收到以下错误

Cloning into 'D:/GitRunner/builds/c2RN8y5j/0/joeybob/mytestproect'...
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@myserver.local/joeybob/mytestproect.git/': error setting certificate verify locations:
  CAfile: D:\GitRunner\builds\c2RN8y5j\0\joeybob\mytestproect.tmp\CI_SERVER_TLS_CA_FILE
  CApath: none

检查CI_SERVER_TLS_CA_FILE的内容,我发现它与BEGIN CERTIFICATE和END CERTIFICATE之间的期望值匹配。

当我提示GIT_SSL_NO_VERIFY = true时,CI窗口会产生以下错误,但仍然成功

WARNING: Failed to load system CertPool: crypto/x509: system root pool is not available on Windows 
ERROR: Failed to parse PEM in D:\GitRunner\builds\c2RN8y5j\0\joeybob\mytestproect.tmp\CI_SERVER_TLS_CA_FILE 

我认为PEM(crt)文件有问题。我在Windows Server 2016上运行此证书,并以base-64编码的X.509格式从本地受信任的根证书存储中导出了证书。这个问题与Windows编码文件的方式有关吗?

1 个答案:

答案 0 :(得分:0)

Joey,这可能为时已晚,对您不再有用,但也许也会为您提供帮助。我遇到了完全相同的问题,并通过以下方式解决了该问题:

这是我认为您已经完成的事情:

  1. 使用参数gitlab-runner register --tls-ca-file=/path注册通过证书的跑步者(证书必须为.pem格式)
  2. 设置environment = ["GIT_SSL_NO_VERIFY=true"]"
  3. 在Windows中将证书作为受信任的根证书导入。

现在是踢手:

3。多次将证书内容复制到.pem文件

我的意思是,您只需要打开.pem文件,然后复制内容并将其多次粘贴到同一文件中即可。保存并让管道再次运行。您应该不再看到任何错误。

问题在于内容有误。问题是因为内容从字节转换为字符串,所以将UTF-8打包为BOM。

在文件中多次添加证书应该摆脱Runner中的错误。这不是解决方案,而是解决方法,但可以快速完成,至少可以做些。

有关此的更多信息:https://gitlab.com/gitlab-org/gitlab-runner/issues/4814

和:https://gitlab.com/gitlab-org/gitlab-runner/issues/2173#note_24022134

希望有帮助!