解决PKIX:unable to find valid certification path to requested target 的问题

今天安装了公司的数字证书,用 myeclipse 调试程序时,出现错误:

解决PKIX:unable to find valid certification path to requested target 的问题


根据错误消息看,貌似是找不到数字证书。可奇怪的是数字证书我已经导入了啊,为何还出现这样的情况了。可能的原因:

一、公钥是否正确?是否是网站出来的公钥?

如何从网站导出公钥,参见: http://blog.csdn.net/faye0412/article/details/6883879


二、如何导入的公钥?导入到哪儿呢?

仔细想想看:使用如下命令导入公钥:

keytool -import -file d:\Server.cer -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias server

将公钥导入到了 %JAVA_HOME%\jre\lib\security\cacerts 文件中。

使用如下命令可以看到结果:

keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" | findstr /i server

如果看到红色框内容,就说明的确导入成功了。


那为何 myeclipse 不承认呢?

三、环境不一致?

再想想应用程序的启动过程,通过 myeclipse 启动 tomcat,进行浏览的。而 myeclipse / tomcat 都基于 java ,而 myeclipse 有自带的 jdk ,启动时会不会是使用了 myeclipse 的jdk,而不是 %JAVA_HOME% 目录下的呢?检查之:

myeclipse -> windows -> preferences -> tomcat -> jdk 


看到下拉框后,我恍然大悟,哈哈,myeclipse 启动tomcat 时,用的是 Sun JDK 1.6.0_13 ,而不是 jdk1.6.0_43(%JAVA_HOME% 指向的jdk目录

ok,找到问题就好说了,果断选择 jdk1.6._43 ,重启 tomcat 

bingo



根据引用和[2],当在进行HTTPS请求时,如果服务器的证书无法通过Java的信任库验证,就会出现"PKIX: unable to find valid certification path to requested target"的错误。这个错误通常发生在以下情况下: 1. 服务器的证书是自签名的或使用未知的证书颁发机构签名的。 2. 信任库中缺少服务器证书的根证书或中间证书。 3. 信任库中的证书已过期或被撤销。 根据引用,在Java中,这个错误会由SunCertPathBuilderException引发。这个异常表示无法构建一个有效的证书路径来验证服务器的证书。 因此,当HttpRequest报"PKIX: unable to find valid certification path to requested target"错误时,通常是由于服务器证书无法在Java的信任库中找到或验证的原因导致的。解决这个问题的方法有以下几种: 1. 添加服务器证书到Java的信任库中:可以使用keytool命令将服务器证书导入到Java信任库中。首先,获取服务器证书,然后使用keytool命令将该证书导入到Java信任库中。具体步骤如下: - 获取服务器证书:可以使用浏览器访问服务器的HTTPS站点并导出证书。 - 使用keytool命令将证书导入到Java信任库中:运行以下命令,将路径替换为你的证书路径和别名替换为你喜欢的别名。 ``` keytool -import -alias <alias> -file <path_to_certificate> -keystore <path_to_keystore> ``` - 确保keytool命令使用的是正确的Java信任库,默认情况下,Java信任库位于$JAVA_HOME/lib/security/cacerts。 2. 使用自定义信任管理器:可以编写自定义的X509TrustManager来验证服务器证书。首先,创建一个实现X509TrustManager接口的类,然后在该类中实现验证逻辑。最后,将该自定义信任管理器设置为HttpClient或HttpURLConnection的信任管理器。这样就可以绕过Java信任库的验证,但需要注意安全风险。 3. 禁用证书验证:虽然不推荐,但可以通过禁用证书验证来解决问题。这个方法会使请求不再验证服务器的证书,但会增加安全风险。具体实现方法因使用的HTTP库而异。 总之,"PKIX: unable to find valid certification path to requested target"错误通常是由于服务器证书无法在Java的信任库中找到或验证的原因导致的。可以通过将服务器证书导入到Java信任库中、使用自定义信任管理器或禁用证书验证来解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值