存在两个Java API参考:
-
http://docs.oracle.com/javase/7/docs/technotes/guides/guides/security/jsse/jsse/jsserefguide.html
-
http://docs.oracle.com/javase/7/docs/technotes/guides/guides/security/certpath/certpathprogguide.html
在第一个中,有关于X509TrustManager接口的描述。我很困惑。我应该使用该一个来实施X509证书验证,还是必须通过第二个链接?这是实现我的目标的标准方法
第二个链接提供围绕CertPath class
的文档,如何实现自己的认证路径验证。因此,您必须自己处理整个PKI证书链(例如,签名和证书的验证)。此外,它为您提供PKIX
的信息,用于证书验证的默认算法。
第一个链接显示了如何使用使用PKIX
算法的TrustManager
。除了PKIX
的证书路径验证外,还包含TrustManager
建立SSL/TLS
通信的更多机制。
TrustManager
/PKIX
算法还提供了吊销机制(CLR
和OCSP
)。要激活OCSP,请深入了解第一个链接部分PKIX Trustmanager支持。
如果使用了INIT(密钥库KS)方法,则默认PKIXPARAMETER是 除了禁用撤销检查的例外。它可以 通过设置系统属性来启用 com.sun.net.ssl.CheckRevocation至true。
您必须将安全属性ocsp.enable
设置为true。因此,基本上,您无事可做
System.setProperty("com.sun.net.ssl.checkRevocation", "true");
Security.setProperty("ocsp.enable", "true");
如果您不想重新实现或交换已使用TrustManager
和PKIX
算法提供的验证链机制,则绝对应该使用第一个链接。如果您需要有关PKIX
算法的更多信息,请实现自己的或做 Just 认证验证验证而不建立TLS/SSL
通信,则应检查第二个链接。