Java 中证书路径验证的全面解析
1. 证书路径验证概述
证书路径验证不仅仅是验证路径上每个证书的签名,还涉及证书是否按预期方式使用。例如,用于加密密钥的证书可能不适用于验证可执行代码的签名。证书路径验证算法确保证书在各个方面都是有效的,除了验证证书签名,还会验证扩展是否合适,以及关键扩展是否被正确处理。若在验证路径中的证书上发现标记为关键的扩展,路径验证算法的实现应失败。
路径验证的具体方式依赖于所使用的配置文件,其中最相关的是 RFC 3280 第 6 节中的 PKIX 配置文件,它涵盖了一种验证机制,用于确定从你希望信任的终端实体证书开始的路径是否能回溯到你已准备信任的证书,这个已准备信任的证书通常被称为信任锚。
2. TrustAnchor 类
java.security.cert.TrustAnchor 类为验证证书路径所需信任的公钥提供了一个容器。该类有三个构造函数,都可以通过包含 X.509 NameConstraints 扩展结构 DER 编码值的字节数组提供可选的名称约束。之后,你可以选择使用包含公钥的证书并使用接受 X509Certificate 的构造函数,或者使用公钥和标识性的 X.500 名称来标识信任锚。传递标识性的 X.500 名称可以通过传递 X500Principal 或 DN 的字符串版本来完成。
NameConstraints 扩展在 RFC 3280 的 4.2.1.11 节有详细讨论。如果它存在于证书中,由 OID 2.5.29.30(id -
超级会员免费看
订阅专栏 解锁全文
3873

被折叠的 条评论
为什么被折叠?



