【问题标题】:GitLab Running - Unable to trust self signed certificateGitLab 正在运行 - 无法信任自签名证书
【发布时间】:2019-07-04 09:26:56
【问题描述】:

运行 GitLab CI Runner 时我必须指定

环境 = ["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 对文件的编码方式有关吗?

【问题讨论】:

  • 我意识到 builds 文件夹中的 pem 文件正在以混合行结尾复制到那里.....当我保存带有 windows 结尾的 pem 文件时也会发生这种情况。我还不知道如何防止这种情况发生
  • @Micromegas 抱歉,不,我最终不得不盲目相信证书,这既不是安全的,也不是我想做的:(

标签: git ssl gitlab gitlab-ci-runner


【解决方案1】:

乔伊,这可能为时已晚,对你来说已经没有用了,但也许它也会对你有所帮助。我遇到了完全相同的问题并通过以下方式解决了它:

我假设你已经这样做了:

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

现在关键来了:

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

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

问题是内容有问题。问题在于 UTF-8 是 BOMed,因为内容是从字节转换为字符串的。

在文件中多次添加证书应该可以消除 Runner 中的错误。这比解决方案更像是一种解决方法,但很快就完成了,至少……。

更多信息:https://gitlab.com/gitlab-org/gitlab-runner/issues/4814

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

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2016-11-29
    • 2019-09-03
    • 1970-01-01
    • 2019-03-06
    • 2018-03-20
    • 1970-01-01
    相关资源
    最近更新 更多