如何为Jenkins Server 配置SSL证书?

在项目环境中启用SSL来保护Jenkins至关重要,本文主要演示如何为Jenkins配置自签名的SSL证书


在大多数情况下,您将在具有内部DNS的私有环境中使用Jenkins,并且可以从各个组织获取内部SSL证书。您还可以使用OpenSSL创建自签名SSL证书。另外,您可以使用服务来加密有效的SSL证书。但是这些证书必须每三个月更新一次。(本例使用自签名证书)


创建自签名证书

默认情况下,所有基于Linux和Unix的系统上都存在Openssl实用程序。

如何为Jenkins Server 配置SSL证书?_第1张图片

## 建立一个openssl目录
mkdir openssl && cd openssl


## 生成CA私钥文件
openssl genrsa -out ca.key 2048


## 使用CA密钥生成CA x509证书文件。定义证书的有效性。输入证书详细信息,例如通用名称,位置,国家/地区等。
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.crt


## 创建服务器私钥
openssl genrsa -out server.key 2048


## 使用私钥生成CSR
openssl req -new -key server.key -out server.csr


## 使用ca.key,ca.crt和server.csr生成服务器SSL证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000


## 出现以下信息
Signature ok
subject=/C=CN/L=Default City/O=devops/CN=jenkins.devops.com
Getting CA Private Key

将SSL密钥转换为PKCS12格式

openssl pkcs12 -export -out jenkins.p12 \
-passout 'pass:123456' -inkey server.key \
-in server.crt -certfile ca.crt -name jenkins.devops.com

将PKCS12转换为JKS格式

keytool -importkeystore -srckeystore jenkins.p12 \
-srcstorepass '123456' -srcstoretype PKCS12 \
-srcalias jenkins.devops.com -deststoretype JKS \
-destkeystore jenkins.jks -deststorepass '123456' \
-destalias jenkins.devops.com

将JKS添加到Jenkins路径

mkdir /etc/jenkins
cp jenkins.jks  /etc/jenkins/


## 更改密钥和文件夹的权限。
chown -R jenkins: /etc/jenkins
chmod 700 /etc/jenkins
chmod 600 /etc/jenkins/jenkins.jks

修改Jenkins的配置

如果你用采用rpm方式安装的Jenkins,可以直接编辑/etc/sysconfig/jenkins配置文件。然后重启Jenkins。

[root@devops jenkinsssl]# grep "HTTPS" /etc/sysconfig/jenkins
# HTTPS port Jenkins is listening on.
JENKINS_HTTPS_PORT="8443"
JENKINS_HTTPS_KEYSTORE="/etc/jenkins/jenkins.jks"


# Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
JENKINS_HTTPS_KEYSTORE_PASSWORD="123456"


# IP address Jenkins listens on for HTTP


如果您是在测试环境类似于java -jar jenkins.war 直接启动的,可以参考以下指令进行配置。(其实就是将参数直接定义在启动参数中)

#!/bin/bash


export JENKINS_HOME=~/jenkins


#nohup java -jar jenkins.war --httpPort=8080 &


nohup java -Dcom.sun.akuma.Daemon=daemonized \
           -Djava.awt.headless=true  \
           -jar jenkins.war  \
           --httpPort=8080 \
           --httpsPort=8443 \
           --httpsKeyStore=/Users/zeyang/jenkins/jenkins.jks \
           --httpsKeyStorePassword=123456 \
           --httpsListenAddress=0.0.0.0 \
           --debug=9 \
           --handlerCountMax=100 \
           --handlerCountMaxIdle=20 \
           --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger \
           --simpleAccessLogger.format=combined  &

进行HTTPS测试

如何为Jenkins Server 配置SSL证书?_第2张图片


更多精彩关注 DevOps云学堂

持续交付流水线中的消息传递与协作实现

Mattermost+Jira集成加速DevOps工作流程

基于Kubernetes部署MatterMost实践

ChatOps实践-GitLab项目通知与协作实现

使用GitLabCI模板库的流水线优化实践

基于GitLab实现端到端DevOps流水线实践



你可能感兴趣的:(如何为Jenkins Server 配置SSL证书?)