拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在Jenkins 中启用HTTPS

在Jenkins 中启用HTTPS

白鹭 - 2022-10-10 2227 0 2

一、概述

Jenkins 是一个开源且易于使用的基于Java 的Web 服务器,通常用于开发持续集成和持续交付(CI/CD) 管道。

在本教程中,我们将介绍通过配置SSL 在Jenkins 服务器上启用HTTPS 的过程。

2. 使用 Jenkins SSL 配置

要使用HTTPS,我们必须更改Jenkins 服务器的内部SSL 设置。

2.1。生成SSL 证书

首先,我们需要生成SSL 证书和密钥库在这里,我们将使用OpenSSL 来创建两者。

让我们从在我们的CentOS 机器上安装OpenSSL 开始:

$ sudo yum install openssl

在下一步中,我们将使用OpenSSL 工俱生成SSL 公钥和私钥:

$ openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
 Generating an RSA private key
 .....................................+++++
 ..................+++++
 writing new private key to 'key.pem'
 Email Address []:

这里生成了key.pem密钥和certificate.pem自签名证书。接下来,让我们通过将它们转换为.p12 keystore来合并这两个文件:

$ openssl pkcs12 -inkey key.pem -in certificate.pem -export -out certificate.p12

重要的是,我们可以稍后使用这两个.pem文件,因此我们可能想要保存它们。现在让我们使用keytool导入.p12文件并将其转换为.jks keystore

$ keytool -importkeystore -srckeystore ./certificate.p12 -srcstoretype pkcs12 -destkeystore jenkinsserver.jks -deststoretype JKS
 Entry for alias 1 successfully imported.
 Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
 Warning:

现在,我们可以在Jenkins 设置中使用jenkinsserver.jks

2.2.将JKS 文件添加到Jenkins 路径

重要的是,我们需要确保jenkinsserver.jks位于Jenkins 可以访问它的地方JENKINS_HOME(通常是/var/lib/jenkins)是一个不错的选择:

$ sudo cp jenkinsserver.jks /var/lib/jenkins/

默认情况下,jenkins用户可以访问/var/lib/jenkins/路径。但是,我们必须更改.jks文件的所有者

$ sudo chown jenkins:jenkins /var/lib/jenkins/jenkins.jks

现在,Jenkins 已设置为正确的密钥库文件以进行安全SSL 身份验证。

2.3.为SSL 通信配置Jenkins

为了使用SSL 设置Jenkins,我们需要使用HTTPS keystore、HTTPS 端口和密码让我们使用/etc/systemd/system/jenkins.service文件中的变量来设置每个变量:

Environment="JENKINS_HTTPS_PORT=8443"
 Environment="JENKINS_HTTPS_KEYSTORE=/var/lib/jenkins/jenkinsserver.jks"
 Environment="JENKINS_HTTPS_KEYSTORE_PASSWORD=baeldung"

至此,在Jenkins 中设置了HTTPS。

2.4.重启Jenkins 服务

到目前为止,我们已经对配置进行了所有更改。为了应用它们,我们重新加载守护进程并重启Jenkins:

$ sudo systemctl daemon-reload
 $ sudo systemctl restart jenkins.service

现在,我们的SSL 证书对Jenkins 服务器有效。因此,HTTPS 启动并运行,保护我们的数据。

2.5. Jenkins 服务器的验证

当然,现在可以通过HTTP 和HTTPS 访问Jenkins。为了说明,让我们使用HTTPS 端口访问Jenkins 服务器:

enable-https-in-jenkins.png

我们可以看到Jenkins 服务器使用HTTPS 在8443端口上运行,由SSL 保护。

3. 使用反向代理

我们还可以在Jenkins 主服务器前运行reverse proxy server来增加安全性此外,例如,在HAProxy 后面运行Jenkins 提供了一个更加用户友好的URL。代理是一种防火墙,可进一步保护对后端服务器的访问。

我们可以运行HAProxy、Nginx、Apache 或Squid 作为我们的代理服务器。在这里,我们使用HAProxy 作为一个相对标准的选择。

3.1。安装和配置HAProxy

使用HAProxy,我们可以将请求重定向到Jenkins。让我们在Linux 机器上安装HAProxy:

$ yum install haproxy

接下来,让我们更改一些默认设置。首先,我们将创建一个监听所有连接的前端节点:

frontend http-in
 bind *:80
 bind *:443 ssl crt /etc/haproxy/haproxy.pem
 mode http
 use_backend jenkins if { path_beg / }

在这里,重定向通过use_backend转到Jenkins 后端。当然,我们还要在配置中添加一个Jenkins 后端节点,这样HAProxy 才能正常转发:

backend jenkins
 server jenkins1 127.0.0.1:8080

上面,我们使用了haproxy.pem文件,它很容易创建:

$ cat certificate.pem key.pem > haproxy.pem

在这里,我们结合了之前的certificate.pemkey.pem来生成haproxy.pem文件。最后,让我们重新加载守护进程并重启haproxy服务:

$ sudo systemctl daemon-reload
 $ sudo systemctl restart haproxy

此时,SSL 应该可以通过HAProxy 在Jenkins 服务器上使用。

3.2.确认

到目前为止,HAProxy 应该已经启动并运行,重定向到Jenkins。为了说明,让我们访问Jenkins 服务器并验证HTTPS 连接:

enable-https-in-jenkins-1.png

正如我们所见,Jenkins 使用HTTPS 进行安全访问,无需任何自定义端口。

4。结论

在本文中,我们按照步骤在Jenkins 服务器上启用SSL 安全性。最初,我们学习了如何配置Jenkins 本身的HTTPS 设置。最后,为了进一步保护SSL 连接,我们添加了一个反向代理服务器,使用Jenkins 作为后端。


标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *