无法识别的选项:- -Jenkins系统d中的httpsCertificate =/选项/证书/项目. crt

qni6mghb  于 2022-12-22  发布在  Jenkins
关注(0)|答案(1)|浏览(169)

Linux上的361.4。我有一个使用SSL的Nginx代理。我正尝试通过此SSL代理暴露Jenkins。为此,我已将nginx的SSL证书和密钥复制到/opt/certs/project. crt & /opt/certs/project. key。我已将所有权更改为Jenkins。现在,当我将以下命令添加到/usr/lib/systemd/system/jenkins.service时

[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/bin/jenkins --httpPort=-1 --httpsPort=8080 --httpsCertificate=/opt/certs/project.crt --httpsPrivateKey=/opt/certs/project.key
Restart=on-failure
SuccessExitStatus=143

然后,我做了systemctl守护进程realod和systemctl重新启动Jenkins。我看到下面的Jenkins日志错误。

无法识别的选项:--httpsCertificate=/选项/证书/项目.crt

此外,我尝试了下面没有做上述更改,,那里也我得到同样的错误信息。

Environment="JENKINS_OPTS= --httpPort=-1 --httpsPort=8080 --httpsCertificate=/opt/certs/project.crt --httpsPrivateKey=/opt/certs/project.key"

我还使用下面的命令将证书导入到JVM中。(虽然不确定这是否是必需的)

<JAVA_HOME>/bin/keytool -importcert -alias <server_name> -keystore <JAVA_HOME>/lib/security/cacerts -file /opt/certs/project.crt

希望有人能帮助我的错误信息。谢谢。

soat7uwm

soat7uwm1#

基于the proposal [JENKINS-68694] Winstone 6.1: Upgrade Jetty from 9.4.46.v20220331 to 10.0.11,标志--httpsPrivateKey--httpsCertificate已替换为--httpsKeyStore--httpsKeyStorePassword

修复

更新证书的格式以使用密钥库,例如使用

# Convert from PEM to P12
openssl pkcs12 -export -in project.crt -inkey project.key -out temp_cert.p12 -name "project_alias"

# Convert from P12 to JKS
# you'll get prompted for a new jks password, memorize it
keytool -importkeystore -srckeystore project.p12 -srcstoretype pkcs12 -destkeystore project.jks

# Set the alias (cert) password to the same of the jks password
keytool -keypasswd -alias project_alias -keystore project.jks

最后,使用项目.jks文件和jks密码,如下所示ExecStart=/usr/bin/jenkins --httpPort=-1 --httpsPort=8080 --httpsKeyStore=/opt/certs/project.jks --httpsKeyStorePassword=JKS_PASSWORD
更多详细信息请参见此gist

变通办法

使用较旧的jenkins版本,例如2.362

相关问题