为什么我的构建在JDK6构建上失败了“peer not authenticated”异常?
用例如下:
HTTPS的背后是Artifactory
CI服务器(例如Jenkins)配置为使用JDK 6运行。
从4.0版本开始。X Artifactory必须在JDK8及以上版本上运行。
当在Jenkins上运行作业时,它们会失败,并出现以下异常:
产生原因:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates (SSLSessionImpl.java: 352)
org.apache.http.conn.ssl.AbstractVerifier.verify (AbstractVerifier.java: 126)
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket (SSLSocketFactory.java: 437)
org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection (DefaultClientConnectionOperator.java: 180)
org.apache.http.impl.conn.ManagedClientConnectionImpl.open (ManagedClientConnectionImpl.java: 294)
org.apache.http.impl.client.DefaultRequestDirector.tryConnect (DefaultRequestDirector.java: 643)
org.apache.http.impl.client.DefaultRequestDirector.execute (DefaultRequestDirector.java: 479)
org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java: 906)
org.apache.http.impl.client.AbstractHttpClient.execute (AbstractHttpClient.java: 805)
org.jfrog.build.client.PreemptiveHttpClient.execute (PreemptiveHttpClient.java: 88)
org.jfrog.build.client.ArtifactoryHttpClient.execute (ArtifactoryHttpClient.java: 193)
org.jfrog.build.client.ArtifactoryHttpClient.upload (ArtifactoryHttpClient.java: 189)
org.jfrog.build.client.ArtifactoryBuildInfoClient.uploadFile (ArtifactoryBuildInfoClient.java: 514)
org.jfrog.build.client.ArtifactoryBuildInfoClient.deployArtifact (ArtifactoryBuildInfoClient.java: 294)
org.jfrog.build.extractor.maven.BuildDeploymentHelper.deployArtifacts (BuildDeploymentHelper.java: 270)
……再来30个
发生了什么事?
JDK6和JDK8之间存在ssl冲突。
JDK负责的一个很好的指示将是更改CI服务器设置以使用JDK7及以上版本运行。
如何调试错误以获得有关异常原因的更多详细信息?
在作业配置中添加以下调试条目'-Djavax.net.debug=all'。
例如,如果CI服务器是Jenkins,任务是Maven,
首先,需要点击高级按钮
然后,添加以下条目在MAVEN_OPTS字段如下所示:
如何解决这个问题,仍然使用JDK6,这是我的要求?
请注意,获得JDK6补丁需要Oracle企业帐户.
出现'peer not authenticated'异常的两个常见原因:
1.SSL协议
检查这关于协议的演变比较JDK版本。
作为一个常见的可能用例,异常我这是由于SSLv2Hello消息处理失败造成的。
在使用JDK6配置的CI服务器上,启用了SSLv2Hello消息。
另一方面,Artifactory服务器使用JDK8运行,其中SSLv2Hello消息在默认情况下是禁用的。
下面是关于这个主题的oracle文档。版本1.6.0_91-b13是为JDK6用户修复ssl握手失败的版本。
检查下面的Stackoverflow谈话同样的话题。
2.证书
对于详细调试输出,将出现以下异常
java.lang.RuntimeException: Could not generate DH keypair
检查以下内容Stackoverflow谈话同样的话题。
下面是关于这个主题的oracle文档。版本1.6.0_105-b15是DHKey对修复的版本。
在这个版本中,DHKeyPair生成支持使用高达2048位的密钥大小。密钥大小必须为64的倍数,如果小于1024位,则为2048位。
这是一个匹配问题参考.
