下面按最常见的两种场景给你说明:
1)Jenkins 自带 Web 使用 HTTPS(SSL)
2)Jenkins 通过 HTTPS 访问其他服务(如 Git、Harbor、K8s)
最简单、最稳定。
sudo apt update
sudo apt install nginx
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d jenkins.example.com
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
openssl pkcs12 -export \
-in fullchain.pem \
-inkey privkey.pem \
-out jenkins.p12 \
-name 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
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。
在 Pipeline:
trustAllCerts()
或在 Jenkins → Manage Jenkins → Script Console:
HttpsURLConnection.setDefaultHostnameVerifier { _, _ -> true }
✅ Debian + Jenkins 推荐方案
Nginx + Let’s Encrypt + Jenkins HTTP
✅ 端口
8080443✅ 防火墙
sudo ufw allow 80,443/tcp
如果你能告诉我:
我可以直接给你精确配置。