如何在TrustManager的checkServerTrusted()中获取CertPathValidatorResult?

时间:2013-07-15 21:01:53

标签: java ssl x509certificate jsse httpsurlconnection

当调用实现checkServerTrusted的类的X509TrustManager方法时,我需要获得与证书链相关的所有验证错误,包括

  1. 证书路径验证问题。例如,CA不信任
  2. 证书字段验证问题。例如,过期证书,扩展密钥使用无效
  3. 这背后的动机是,我可以向用户提供证书验证问题,然后将其添加为Firefox现在的“例外”。但是,现在,只要找到路径验证问题,就会抛出CertPathValidatorException,但它没有提供有关证书中字段有效性的信息。我该如何实现呢?

    经过一些阅读后,我发现CertPath API提供了这样的功能,并发现PKIX实现是一个包装器,但只是不返回CertPathValidatorResult。我想在返回所有验证问题的同时,最大限度地利用现有的JAVA功能(无需将自己的自定义包装器写入API)。

1 个答案:

答案 0 :(得分:0)

如果出现证书错误,您甚至无法访问X509TrustManager.checkServerTrusted()。您需要在较早的时候挂钩证书处理,我不相信JSSE中有一个。