温馨提示×

debian jenkins ssl怎么配

小樊
49
2026-10-22 14:46:45
栏目: 云计算

下面按最常见的两种场景给你说明:
1)Jenkins 自带 Web 使用 HTTPS(SSL)
2)Jenkins 通过 HTTPS 访问其他服务(如 Git、Harbor、K8s)


一、Jenkins Web 启用 HTTPS(Debian)

方式一:用 Nginx 反代 + SSL(推荐)

最简单、最稳定。

1. 安装 Nginx

sudo apt update
sudo apt install nginx

2. 申请证书(以 Let’s Encrypt 为例)

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d jenkins.example.com

3. Nginx 反代配置

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

    ssl_certificate     /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/jenkins.example.com/privkey.pem;

    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 https;
    }
}

server {
    listen 80;
    server_name jenkins.example.com;
    return 301 https://$host$request_uri;
}
sudo nginx -t
sudo systemctl restart nginx

✅ Jenkins 本身仍走 http://localhost:8080


方式二:Jenkins 直接启用 HTTPS(不推荐新手)

1. 准备证书(PKCS12)

openssl pkcs12 -export \
  -in fullchain.pem \
  -inkey privkey.pem \
  -out jenkins.p12 \
  -name jenkins

2. 修改 Jenkins 配置

sudo vim /etc/default/jenkins

添加:

JAVA_OPTS="-Djavax.net.ssl.keyStore=/var/lib/jenkins/jenkins.p12 \
           -Djavax.net.ssl.keyStorePassword=你的密码 \
           -Djavax.net.ssl.keyStoreType=PKCS12"

或:

JENKINS_ARGS="--httpsPort=8443 --httpsKeyStore=/var/lib/jenkins/jenkins.p12 --httpsKeyStorePassword=密码"
sudo systemctl restart jenkins

二、Jenkins 访问 HTTPS 外部服务(忽略/信任证书)

1)信任自签证书(Java keystore)

sudo cp ca.crt /usr/share/ca-certificates/
echo "ca.crt" | sudo tee -a /etc/ca-certificates.conf
sudo update-ca-certificates

导入 Java:

sudo keytool -import \
  -alias myca \
  -file ca.crt \
  -keystore $JAVA_HOME/lib/security/cacerts \
  -storepass changeit

重启 Jenkins。


2)临时忽略证书(不推荐生产)

在 Pipeline:

trustAllCerts()

或在 Jenkins → Manage Jenkins → Script Console:

HttpsURLConnection.setDefaultHostnameVerifier { _, _ -> true }

三、常见问题

✅ Debian + Jenkins 推荐方案

Nginx + Let’s Encrypt + Jenkins HTTP

✅ 端口

  • Jenkins:8080
  • HTTPS:443

✅ 防火墙

sudo ufw allow 80,443/tcp

如果你能告诉我:

  • Jenkins 安装方式(apt / docker)
  • 是否用域名
  • 自签还是 CA 证书

我可以直接给你精确配置。

0 踩