Jenkins和GitLab CI-过期证书

时间:2018-08-28 21:37:49

标签: ssl jenkins gitlab

关于如何成功链接Jenkins和Gitlab以获得良好的CI,有大量的文章和文章。这些都不对我有用,尤其是因为我尝试做的事总是在詹金斯方面遇到证书错误。这里有两个例子:

  

无法连接到存储库... stderr:致命:无法访问'https://**.git/':SSL证书问题:证书已过期

     

客户端错误:的证书与证书主题的通用名称不匹配:MyCompany

这使我想到了这个问题。我不确定我的案件是否是“自签名证书”一词的示例,但是我知道,每当打开公司的GitLab页面时,都会在该页面上看到证书错误。当我打开证书时。信息,它表明证书是:有效期至:2017年4月。因此显然已过期。不知道为什么我们不更新它,但是我想知道我们是否在使用带有过期证书的GitLab。完全消除零是我让詹金斯与GitLab交谈的机会。

我正在非常努力地让詹金斯(Jenkins)在这里工作-但是,如果是证书,我是在浪费时间尝试吗?过期了吗?我还有更多选择可以使这项工作吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

今天晚上,我遇到了同样的问题,由于我的Gitlab服务器上的ssl证书过期,因此我在Jenkins中的构建中断了。以下列出了在Gitlabs ssl证书过期时Jenkins尝试从Gitlab存储库中提取时,要纠正Jenkins构建错误所需采取的步骤。

**以下所有命令均在Ubuntu 16.04上运行

1)为您的Gitlab服务器生成CSR或SAN CSR

  • 这将产生.csr和.key文件

  • 不要共享或发布“ .key”文件(您的私钥)

  • 将这些文件用于步骤2

2)为Gitlab服务器生成SSL证书(这将生成.crt文件)

3)将.crt和.key文件放入/ etc / gitlab / ssl /(Ubuntu 16.04)

  • 我使用了我的服务器目录,但您的服务器目录可能因平台而异

sudo openssl x509 -req -days 365 -in“ /etc/gitlab/ssl/gitlab.csr” -signkey“ /etc/gitlab/ssl/gitlab.key” -out“ / etc / gitlab / ssl / gitlab .crt”

4)编辑/etc/gitlab/gitlab.rb文件以反映您的新通用名

  • 那是如果您更改了

external_url'https://'#ip地址或DNS名称

5)重新配置Gitlab(如果您没有更改常用名,请跳过此步骤

sudo gitlab-重新配置

6)重新启动gitlab服务器,以使更改生效

  • 这将导致中断,因此,如果在生产中,请确保您有维护时段

sudo systemctl重新启动gitlab-runsvdir.service

7)确认服务器已重新联机

sudo systemctl状态gitlab-runsvdir.service

8)现在,在您的Jenkins服务器上,您需要使用新的Gitlab服务器证书更新/etc/ssl/certs/ca-certificates.crt

**同样,我正在Ubuntu 16.04中运行此程序(可能因平台而异)

**将下面命令中的更改为gitlab服务器的通用名称

sudo su - 
echo -n | openssl s_client -showcerts -connect <common_name_goes_here>:443   2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt

9)尝试在Jenkins中运行构建

  • 希望这行得通。