我需要对给定的X509证书执行链验证和吊销检查。因此,我浏览了this guide,还探索了JavaDoc for
CertPathValidator
CertPathBuilder API以及github存储库中的示例。
毕竟,我有点困惑,因为我看不到CertPathValidatorCertPathBuilder类之间的明显区别。 Java文档说:
CertPathValidator

用于验证证书路径的类(也称为证书链)

CertPathBuilder

用于构建认证路径的类(也称为证书链)。

这两个类都支持吊销检查和几乎相同的方法。因此,我的问题是,在每种情况下应使用每个类,什么是验证证书而不是构建?

最佳答案

当您拥有证书的阵列/列表/等并且要检查它们是否为证书路径时,请使用CertPathValidator
当您没有可能是认证路径的阵列/列表/等时,请使用CertPathBuilder,但除了要验证的证书之外,您还可以:

  • 零个或多个中间证书的集合。其中一些可能不是路径的一部分。
  • 一组一个或多个可信证书。
  • 10-05 21:35