MacOS Jenkins:查找JRE并导入自签名证书

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MacOS Jenkins:查找JRE并导入自签名证书相关的知识,希望对你有一定的参考价值。

新手在这里使用macOS。

我们在MacOS上安装了Jenkins。

我需要知道它使用哪种JRE和cacerts,因为我需要导入GitHub企业服务器的自签名证书以进行集成。我有SSL错误,并试图遵循我在Windows中成功完成的resolving PKIX-path-building-failed-error-message guide

在Windows Jenkins安装中,它有自己的JENKINS_HOME / jre文件夹,可以在其中找到lib / security / cacerts。

问题1:在MacOS中哪里/如何找到Jenkins使用的jre?

到目前为止,我发现的是java_home

/usr/libexec/java_home

但是这个我不太确定,因为我的后续步骤的结果都失败了。

问题2:如何将修改后的cacerts文件的信任库和密码添加到jenkins启动?

使用/ usr / libexec / java_home中的jre,我已将/ jre / lib / security / cacerts复制到我的JENKINS_HOME / custom-keystore / cacerts并在那里导入了自签名证书。

sudo keytool -importcert -alias github -file JENKINS_HOME/custom-keystore/selfsigned.cer -keystore JENKINS_HOME/custom-keystore/cacerts

之后,我修改了Jenkins启动参数:

-Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacert
-Djavax.net.ssl.trustStorePassword=changeit

使用:

defaults write /Library/Preferences/org.jenkins-ci.plist Djavax.net.ssl.keyStore JENKINS_HOME/custom-keystore/cacerts
defaults write /Library/Preferences/org.jenkins-ci.plist Djavax.net.ssl.keyStorePassword changeit

然后使用以下命令重启Jenkins:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

在此之后,我面临各种问题:

  1. 代理问题 - (在proxylist中添加服务器URL后解决 - macOS网络配置)
  2. GitHub和其他以前成功的集成现在出现以下错误: javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接

其他问题我的步骤中是否有任何遗漏?

我在Jenkins启动中添加参数的方式是否正确? (在Windows中,我刚刚修改了jenkins.xml,也使用了带“ - ”的参数,而这里似乎不需要“ - ”?)

由于我使用的是Launch Daemon而不是Launch Agent,我是否必须重启系统? - 默认情况下卸载和加载应该足以应用更改?

答案

现在成功解决了这些问题。我纠正了1步,然后再添加了一步。

  1. 而不是使用

sudo defaults write /Library/Preferences/org.jenkins-ci.plist Djavax.net.ssl.trustStore /Users/Shared/Jenkins/Home/custom-keystore/cacerts

sudo defaults write /Library/Preferences/org.jenkins-ci.plist Djavax.net.ssl.trustStorePassword changeit

我编辑了jenkins_runner.sh中发现的/Library/Application Support/Jenkins

javaArgs="-Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStore=/Users/Shared/Jenkins/Home/custom-keystore/cacerts -Djavax.net.ssl.trustStorePassword=changeit"
  1. (重启)执行后 launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

我发现我所做的更改并不完全适用。所以我不得不重启我的mac。

事实证明,我用于keytool和导入cacerts的/ usr / libexec / java_home中的Java / JRE是正确的。

以上是关于MacOS Jenkins:查找JRE并导入自签名证书的主要内容,如果未能解决你的问题,请参考以下文章

MacOS 上的 Chrome 停止信任自签名 CA 颁发的证书

sh 在MacOS上使用SubjectAltName为localhost创建自签名证书

ini MacOS Sierra和Chrome上的自签名SSL证书

Jenkins 无法使用带有自签名证书的 HTTPS (HTTP + SSL) 连接到 SonarQube 服务器

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 7.通过macOS下的keychian.app打开ssl.crt

ClassLoader