【发布时间】:2013-10-01 01:38:50
【问题描述】:
我需要忽略 PKIX 路径构建异常
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExc
ption: unable to find valid certification path to requested target
我知道如何通过编写自己的实现 X509TrustManager 的类来做到这一点,而我总是从 isServerTrusted 实现 return true。
但是,我不想信任所有服务器和所有客户端。
- 我希望像当前一样为客户完成所有默认验证。
- 对于服务器,我只想忽略一个特定证书的服务器证书验证,但想继续验证它,就像目前所做的那样(例如,使用 cacerts 存储)。
我怎样才能实现这样的事情 - 即在我替换之前将部分验证传递给 X509TrustFactory 对象。
即这就是我想做的事情
public boolean isServerTrusted(X509Certificate[] chain)
{
if(chain[0].getIssuerDN().getName().equals("MyTrustedServer") && chain[0].getSubjectDN().getName().equals("MyTrustedServer"))
return true;
// else I want to do whatever verification is normally done
}
另外我不想打扰现有的isClientTrusted 验证。
我该怎么做?
【问题讨论】:
标签: java security ssl x509certificate pki