2014-04-20 51 views
0

我对web services完全陌生。我搭售通过SSL连接进行连接。我跟着这个网站:SSLHandshakeException: PKIX: unable to find valid certification path to requested target,这个线程How to solve javax.net.ssl.SSLHandshakeException Error?和我没有添加certificatekeystore如下:尝试通过SSL进行连接时出错。无法找到要求的目标的有效认证路径

keytool -importcert -alias <some name> -file <Certifacate path> -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit 

和我检查是存在使用keytool -list命令

的问题是,我得到这个当我试图通过SSL在应用程序连接错误消息:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 

我也试图添加trustStore位置和密码在应用程序如下:

System.setProperty("javax.net.ssl.trustStore","C:\\Program Files (x86)\\Java\\jre7\\lib\\security\\cacerts"); 
System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); 

但仍然有同样的错误。

我正在使用Jdeveloper 11g R1JDK 7,如果这是帮助。


更新:

经过进一步阅读一些解决方案,说我需要让这个路径:

C:\Program Files\Java\jdk1.7.0_09\jre\lib\security\cacerts

由于truststore

我更换上面的Java语句如下:

System.setProperty("javax.net.ssl.trustStore","C:\\Program Files\\Java\\jdk1.7.0_09\\jre\\lib\\security\\cacerts"); 
System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); 

但我仍然得到相同的错误!

+0

可能重复[获取错误:PKIX路径构建失败:无法找到有效的证书路径到请求的目标](http://stackoverflow.com/questions/17388279/getting-error-pkix-path-building-failed-unable-to-find-有效认证-pat) –

+0

@WarrenDew我已经这样做了,正如我在问题 – Salman

+1

中所描述的那样将javax.net.ssl.trustStore设置为JRE默认值是alre ady默认情况下发生。你根本不需要这样做。只要您将证书导入到正确的cacerts文件中,并通知keytool将其作为CA证书进行信任,它就可以工作。 – EJP

回答

0

我拿到了证书形式的第三方后,我做了以下内容:

  1. 将证书添加到受信任的根证书在浏览器与服务器身份验证形成advance option

  2. 将证书添加到信任证书使用keytool选项command prompt请参阅此链接:Resolving javax.net.ssl.SSLHandshakeException有关信息。

漫长的探索后,我发现问题unable to find valid certification path to requested target如下原因:(注:这就是我发现可能有更多的

一个。没有添加缺少的中间证书。

为了解决这个问题,你需要添加根证书,所有其他的将默认添加。要找出您的第三方使用的证书,请参阅以下链接。基本上,建议的解决方案将为您提供一个名为(InsertCert.java)的java类,它将为您提供服务器使用的证书。你需要什么是通过host name作为参数。您可以通过以下链接的详细信息:

b。你要添加在错误的cacerts文件的证书。

为了解决这个问题,是指早期(InsertCert.java)中提到的同一个Java类,它会在我的情况下正确cacerts路径我使用Jdeveloper 11.1.1.7提供和路径是:中

C:\Oracle\Middleware\JDeveloper\JDeveloper11117\jdk160_24\jre\lib\security\cacerts 
相关问题