我想扩展证书验证算法或对其进行模块化,以便选择可以跳过的验证。我不想重新发明轮子,所以我希望可以继承Java Sun的PKIX实现。
但是,我找不到源代码。显然,它是引擎类,并且可以通过getInstance("PKIX")
获得验证器。我发现的关闭次数是PKIXValidator
中的$JAVA_HOME\lib\src.zip\java.base\sun\security\validator\PKIXValidator
。
我觉得这不是正确的文件,因为类本身具有以下方法:
private X509Certificate[] doValidate(X509Certificate[] chain,
PKIXBuilderParameters params) throws CertificateException {
CertPathValidator validator = CertPathValidator.getInstance("PKIX");
CertPath path = factory.generateCertPath(Arrays.asList(chain));
certPathLength = chain.length;
PKIXCertPathValidatorResult result =
(PKIXCertPathValidatorResult)validator.validate(path, params);
return toArray(path, result.getTrustAnchor());
}
由于此类未实现validate()
方法,因此我认为还有另一个文件可以实际验证证书。我不仅指签名,还指KeyUsage,扩展,正确的Issuer / Subject,整个程序包。
总而言之。我正在寻找可以检查正确的KeyUsage,主题和颁发者,关键扩展等的实现。