当调用实现 X509TrustManager
类的 checkServerTrusted
方法时,我需要获取与证书链相关的所有验证错误,包括
- 证书路径验证问题。例如 CA 不受信任
- 证书字段验证问题。例如证书过期,扩展 key 使用无效
这背后的动机是,在用户将其添加为“异常(exception)”之前,我可以向用户展示证书验证问题,就像 Firefox 现在所做的那样。但是,现在,一旦发现路径验证问题,就会抛出 CertPathValidatorException
,但它没有提供有关证书中字段有效性的任何信息。我该如何实现?
经过一些阅读,我发现 CertPath
API 提供了这样的功能,并且发现 PKIX 实现是对此的包装,但只是不返回 CertPathValidatorResult
。我想在返回所有验证问题时最大限度地利用现有的 JAVA 功能(无需将我自己的自定义包装器写入 API)。
最佳答案
如果出现证书错误,您甚至无法访问 X509TrustManager.checkServerTrusted()。您需要在较早的时候 Hook 证书处理,我认为 JSSE 中没有。
关于java - 如何在 TrustManager 的 checkServerTrusted() 中获取 CertPathValidatorResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663870/