一、概述
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 服务器:
我们可以看到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 * 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.pem
和key.pem
来生成haproxy.pem
文件。最后,让我们重新加载守护进程并重启haproxy
服务:
$ sudo systemctl daemon-reload $ sudo systemctl restart haproxy
此时,SSL 应该可以通过HAProxy 在Jenkins 服务器上使用。
3.2.确认
到目前为止,HAProxy 应该已经启动并运行,重定向到Jenkins。为了说明,让我们访问Jenkins 服务器并验证HTTPS 连接:
正如我们所见,Jenkins 使用HTTPS 进行安全访问,无需任何自定义端口。
4。结论
在本文中,我们按照步骤在Jenkins 服务器上启用SSL 安全性。最初,我们学习了如何配置Jenkins 本身的HTTPS 设置。最后,为了进一步保护SSL 连接,我们添加了一个反向代理服务器,使用Jenkins 作为后端。
0 评论