繁体   English   中英

Jenkins Windows slave 认为我的证书无效

[英]Jenkins Windows slave thinks my cert is invalid

按照文档使用 Java Web Start,我已经到了在从站上运行此命令以连接到主站的地步:

java -jar agent.jar -jnlpUrl https://my-server.com:8888/computer/myslave/slave-agent.jnlp -secret sdfsdfsdfsdf -workDir "c:\Jenkins"

我有一个有效的公共证书。 从奴隶我可以访问https://my-server.com:8888并且 chrome 说证书有效,那么为什么 jenkins 抱怨? 当我为这该死的东西付了很多钱时,使用-noCertificateCheck似乎很愚蠢

2018 年 3 月 28 日晚上 9:34:49 org.jenkinsci.remoting.engine.WorkDirManager initializeWorkDir INFO: Using c:\\Jenkins\\remoting as a remoting work directory 错误和输出日志都将打印到 c:\\Jenkins\\remoting Exception在线程“main”中 java.io.IOException: 无法验证服务器证书。 如果您使用的是自签名证书,则可以使用 -noCertificateCheck 选项绕过此检查。 在 hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:548) 在 hudson.remoting.Launcher.run(Launcher.java:322) 在 hudson.remoting.Launcher.main(Launcher.java:283) 引起:javax。 net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在 sun.security.ssl.Alerts.getSSLException(未知来源),位于 sun.security.ssl.SSLSocketImpl.fatal(未知来源),位于 sun.security.ssl.Handshaker.fatalSE(未知来源),位于 sun.security.ssl.Handshaker.fatalSE(未知来源),位于 sun.security。 ssl.ClientHandshaker.serverCertificate(Unknown Source) at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) at sun.security.ssl.Handshaker.processLoop(Unknown Source) at sun.security.ssl.Handshaker.process_record(Unknown Source) ) 在 sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 在 sun.security.ssl.SSLSocketImpl.performIniti alHandshake(Unknown Source) at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) ) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java: 490) ... 2 其他原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法在 sun.security.validator.PKIXValidator 找到请求目标的有效认证路径.doBuild(Unknown Source) at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) at sun.security.validator.Validator.validate(Unknown Source) at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) at sun .security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Sou rce) 在 sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ... 14 更多 原因:sun.security.provider.certpath.SunCertPathBuilderException:无法在 sun.security.provider 找到请求目标的有效认证路径。 certpath.SunCertPathBuilder.build(Unknown Source) at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) at java.security.cert.CertPathBuilder.build(Unknown Source) ... 20 更多

编辑:所以我根本无法连接。 如果我使用-noCertificateCheck我会得到Incorrect acknowledgement sequence我假设因为我使用 HTTPS 没有验证证书

在您的问题中,您使用端口 8888 ( https://my-server.com:8888 )。 我看到端口的 jnlp 脚本不存在或者是 443。

当我曾经看到像您这样的错误时,我将证书导入到 Java 密钥库中。 欲了解更多详情,请点击此处。

keytool -import -alias $ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts -file $PATH_TO_PEM_FILE

只有非公共证书(如自签名)才需要此导入,但您可以尝试。 有可能是证书链的解释在这里

我的问题是我需要将整个证书链导入 java 密钥库

chrome 等浏览器将遵循 aia 扩展并为您下载链,但 java 密钥库想让您的生活变得艰难。

我试图

  1. 更新salve机器上的Java以获取Java最新的信任库。
  2. 使用公共 SSL 手动更新 Java 信任存储(步骤)

但上面没有任何效果。

最后,通过绕过以下命令末尾的 -noCertificateCheck,我能够从从属服务器连接到主服务器:

java -jar agent.jar -jnlpUrl https://example.com/computer/windows_slave/jenkins-agent.jnlp -secret [secret] -noCertificateCheck

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM