温馨提示×

centos jenkins如何设ssl

小樊
51
2026-09-03 06:13:34
栏目: 云计算

CentOS 上为 Jenkins 配置 SSL(HTTPS),常见有 三种方式,从推荐到简单依次为:


✅ 推荐方案:使用 Nginx 反向代理 + SSL(最常用、最灵活)

一、前提

  • CentOS 7/8
  • Jenkins 已安装(默认端口 8080)
  • 已申请 SSL 证书(如 Let’s Encrypt 或自有证书)

二、安装 Nginx

yum install -y nginx
systemctl enable nginx
systemctl start nginx

三、配置 SSL 证书(以 Let’s Encrypt 为例)

yum install -y certbot python2-certbot-nginx
certbot --nginx -d jenkins.example.com

或手动指定证书:

/etc/nginx/ssl/jenkins.crt
/etc/nginx/ssl/jenkins.key

四、配置 Nginx 反向代理

编辑:

vi /etc/nginx/conf.d/jenkins.conf

示例配置:

server {
    listen 80;
    server_name jenkins.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name jenkins.example.com;

    ssl_certificate     /etc/nginx/ssl/jenkins.crt;
    ssl_certificate_key /etc/nginx/ssl/jenkins.key;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

五、Jenkins 配置(重要)

vi /etc/sysconfig/jenkins

修改:

JENKINS_ARGS="--httpListenAddress=127.0.0.1 --httpPort=8080"

重启:

systemctl restart jenkins
systemctl restart nginx

访问:

https://jenkins.example.com

✅ 方案二:Jenkins 直接使用 SSL(不推荐生产)

1️⃣ 生成 PKCS12 证书

openssl pkcs12 -export \
  -in jenkins.crt \
  -inkey jenkins.key \
  -out jenkins.p12 \
  -name jenkins

2️⃣ 修改 Jenkins 启动参数

vi /etc/sysconfig/jenkins
JENKINS_ARGS="--httpsPort=8443 --httpsKeyStore=/path/jenkins.p12 --httpsKeyStorePassword=密码"

重启:

systemctl restart jenkins

⚠️ 缺点:

  • 性能差
  • 不支持 SNI
  • 维护麻烦

✅ 方案三:使用 Apache(类似 Nginx)

如果你更熟悉 Apache:

yum install httpd mod_ssl

使用 ProxyPass 做反向代理,配置类似 Nginx。


✅ 常见问题排查

Jenkins 页面样式错乱

在 Jenkins → 系统配置 中设置:

Jenkins URL = https://jenkins.example.com/

防火墙

firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload

✅ 总结推荐

方案 推荐度 说明
Nginx + SSL ⭐⭐⭐⭐⭐ 最稳定、最通用
Jenkins 自带 SSL ⭐⭐ 仅测试
Apache 反向代理 ⭐⭐⭐⭐ 可选

如果你愿意,可以告诉我:

  • CentOS 版本
  • Jenkins 安装方式(yum / war)
  • 是否使用域名 / 内网 IP

我可以直接给你 可用配置文件

0