实现 X509TrustManager - 将部分验证传递给现有验证程序
我需要忽略 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
return true
isServerTrusted
但是,我不想信任所有服务器和所有客户端。
- 我希望像现在这样为客户端完成所有默认验证。
- 对于服务器,我只想忽略一个特定证书的服务器证书验证,但希望继续并像当前一样对其进行验证(例如,使用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
我该怎么做?