如何给 Jenkins 设置 HTTPS 访问?

本文是关于如何为 Jenkins 设置 HTTPS 的快速指南。已经有许多指南可用。我读了其中的一些。但有两件事让我感到奇怪。首先,一些指南希望您更改 Jenkins 的中央 systemd 文件(而不是覆盖文件),其次,他们希望您创建一个 JKS 文件(而不是 PKCS #12)。

我的警告是:永远不要覆盖 /etc/systemd/system 中的文件。这些文件由您的系统和包管理器管理。如果要添加或更改 Jenkins 的设置,请使用 /etc/systemd/system/jenkins.service.d/override.conf。 JKS 是专有格式。另一方面,PCKS #12 是一个行业标准,也是自 Java 9 以来的默认密钥库格式!

生成 SSL 证书

首先,您需要一个证书。您可以使用 openssl 创建一个:

 openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out jenkinns.pem

当然,如果您已有证书,则无需创建新证书。但是您必须将其转换为 PKCS #12 文件。

继续上面的示例,您必须将文件 key.pem 和 jenkins.pem 合并到 PKCS #12 密钥库中:

openssl pkcs12 -inkey key.pem -in jenkins.pem -export -out jenkins.p12

Enter fullscreen mode Exit fullscreen mode

最后,将文件 jenkins.p12 放在 Jenkins 可以访问的地方。我把它放在 /var/lib/jenkins 中。

sudo mv ./jenkins.p12 /var/lib/jenkins
# 我假设您使用默认设置运行Jenkins。当然,如果你用不同的用户运行它,你就必须改写“chown”!
sudo chown jenkins:jenkins /var/lib/jenkins/jenkins.p12

在 Jenkins 服务中启用 HTTPS

首先告诉 Jenkins 如何使用秘钥文件。创建文件 /etc/systemd/system/jenkins.service.d/override.conf 并将以下内容放入其中。

[Service]
Environment="JENKINS_HTTPS_PORT=8443"
Environment="JENKINS_HTTPS_KEYSTORE=/var/lib/jenkins/jenkins.p12"
Environment="JENKINS_HTTPS_KEYSTORE_PASSWORD=<your-password>"

现在,重新启动 Jenkins 服务。

sudo systemctl daemon-reload
sudo systemctl restart jenkins.service 

全做完了

现在访问 https://localhost:8443 应该会为您提供 Jenkins 登录页面,且是有效且安全的 https 连接。

引用链接

[1] /etc/systemd/system/jenkins.service.d/override.conf: https://www.jenkins.io/doc/book/system-administration/systemd-services/
[2] PCKS #12: https://en.wikipedia.org/wiki/PKCS_12
[3] 行业标准: https://en.wikipedia.org/wiki/PKCS