【发布时间】:2012-03-21 15:52:05
【问题描述】:
我得到了 URL 列表,我想使用 JAVA 验证它们的扩展验证 (EV) 属性 我可以提出请求并获得他们的证书,但我不确定如何验证给定站点的“扩展验证”。
证书有什么特殊价值吗?还是什么属性?
【问题讨论】:
标签: java ssl certificate jsse
我得到了 URL 列表,我想使用 JAVA 验证它们的扩展验证 (EV) 属性 我可以提出请求并获得他们的证书,但我不确定如何验证给定站点的“扩展验证”。
证书有什么特殊价值吗?还是什么属性?
【问题讨论】:
标签: java ssl certificate jsse
从用户界面的角度来看,扩展验证最有用。如果您的客户端在其用户界面中没有任何内容来显示证书,那么它就不那么有用了。这些验证默认没有集成在 JSSE 中,可能是因为对它的需求很少(缺少 Java 浏览器)。 (顺便说一句,您应该验证您在连接时获得的证书,而不是检查第一个连接并连接另一个,以防万一)。
规范由CA/browser forum定义。
OID 值和根 CA 证书指纹被硬编码到浏览器中(请参阅security/certverifier/ExtendedValidation.cpp in Firefox, used to be in in security/manager/ssl/src/nsIdentityChecking.cpp)。还有一个 list on Wikipedia 供参考,但原则上您应该检查每个 CA 的策略 OID。
要分析扩展,如果 X509Certificate.getExtensionValue() 不够,使用 BouncyCastle 可能会很有用。
您必须注意的一个问题是根 CA 证书的硬编码 SHA-1 指纹需要与信任库中的那些证书完全匹配。在大多数浏览器/操作系统/JRE 附带的捆绑包中,一些 CA 会不时更新其 CA 证书:确保您使用的是相同的。
【讨论】: