Linux环境下Jenkins启动报错:Unrecognized option: --httpsCertificate
问题原因
Jenkins 2.361.4 已移除了--httpsCertificate和--httpsPrivateKey这两个启动参数,这就是你遇到"Unrecognized option"错误的核心原因。新版本Jenkins调整了SSL配置逻辑,不再支持直接指定证书/密钥文件的方式。
结合你已有Nginx SSL代理的场景,推荐以下两种解决方案:
方案一:用Nginx处理SSL,Jenkins仅监听本地HTTP(推荐)
既然已经部署了Nginx代理,完全不需要让Jenkins自身处理SSL,只需让Jenkins监听本地HTTP端口,由Nginx负责对外提供HTTPS服务即可,这也是反向代理的最佳实践。
- 修改Jenkins服务配置
编辑/usr/lib/systemd/system/jenkins.service,将[Service]段的配置改为:
[Service] Type=notify NotifyAccess=main ExecStart=/usr/bin/jenkins --httpPort=8080 --httpListenAddress=127.0.0.1 Restart=on-failure SuccessExitStatus=143
或者用Environment方式配置:
[Service] Type=notify NotifyAccess=main Environment="JENKINS_OPTS= --httpPort=8080 --httpListenAddress=127.0.0.1" Restart=on-failure SuccessExitStatus=143
- 重启Jenkins服务
systemctl daemon-reload systemctl restart jenkins
- 配置Nginx反向代理
在Nginx的站点配置文件中添加以下内容(替换your-domain.com为你的实际域名):
server { listen 443 ssl; server_name your-domain.com; ssl_certificate /opt/certs/project.crt; ssl_certificate_key /opt/certs/project.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; } }
- 验证Nginx配置并重启
nginx -t systemctl restart nginx
方案二:让Jenkins直接提供SSL服务(需转换证书格式)
如果一定要让Jenkins自身处理SSL,需要将你的证书和密钥转换为JVM支持的JKS密钥库格式:
- 将证书和密钥转为PKCS12格式
openssl pkcs12 -export -in /opt/certs/project.crt -inkey /opt/certs/project.key -out /opt/certs/jenkins.p12 -name jenkins
执行时会要求设置PKCS12文件的密码,请记录下来。
- 将PKCS12转为JKS密钥库
keytool -importkeystore -deststorepass <你的密钥库密码> -destkeypass <你的密钥密码> -destkeystore /opt/certs/jenkins.jks -srckeystore /opt/certs/jenkins.p12 -srcstoretype PKCS12 -srcstorepass <刚才设置的PKCS12密码> -alias jenkins
- 修改Jenkins服务配置
编辑/usr/lib/systemd/system/jenkins.service,更新[Service]段:
[Service] Type=notify NotifyAccess=main ExecStart=/usr/bin/jenkins --httpPort=-1 --httpsPort=8080 --httpsKeyStore=/opt/certs/jenkins.jks --httpsKeyStorePassword=<你的密钥库密码> Restart=on-failure SuccessExitStatus=143
- 设置密钥库文件权限
chown jenkins:jenkins /opt/certs/jenkins.jks chmod 600 /opt/certs/jenkins.jks
- 重启Jenkins服务
systemctl daemon-reload systemctl restart jenkins
额外说明
你之前将证书导入JVM系统cacerts的操作是不必要的,无论采用哪种方案,都不需要这一步骤。
内容的提问来源于stack exchange,提问作者Prageeth Athulathmudali
相关产品推荐
相关产品推荐

