为什么我的构建在JDK6构建上失败了“peer not authenticated”异常?
用例如下:
Artifactory是HTTPS的支持者
CI服务器(例如Jenkins)配置为使用JDK 6运行。
从4.0版本开始。X Artifactory必须在JDK8及以上版本下运行。
当在Jenkins上运行作业时,它们会失败,出现以下例外:
产生原因:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated . (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:不能生成DH对
检查以下内容Stackoverflow谈话同样的话题。
下面是关于这个主题的oracle文档。版本1.6.0_105-b15是固定DHKey对的版本。
在这个版本中,DHKeyPair生成支持使用最大2048位的密钥大小。密钥大小小于1024位必须是64的倍数,小于2048位则必须是64的倍数。
这是匹配的问题参考.
