如何在X509TrustManager中启用OCSP?

mda*_*vid 3 java ocsp jsse certificate-revocation ssl-certificate

System.setProperty("com.sun.net.ssl.checkRevocation", "true");
Security.setProperty("ocsp.enable", "true");
Run Code Online (Sandbox Code Playgroud)

设置这些属性真的足以启用 OCSP 吗?

如果是这样,那么为什么我们需要充气城堡 OCSP 支持而不是仅仅设置此属性?

Pau*_*ski 5

如果证书包含授权信息访问扩展 (OCSPSigning), 那么您无需执行任何操作,只需设置您提到的属性即可。

System.setProperty("com.sun.net.ssl.checkRevocation", "true");
Security.setProperty("ocsp.enable", "true");
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅RFC3280如何使用 OpenSSL 启动 OCSP 。

如果您的 CA 没有为颁发的证书提供此扩展,那么您可以通过设置属性来配置响应者 URL

Security.setProperty("ocsp.responderURL", ...)
Run Code Online (Sandbox Code Playgroud)

默认情况下,OCSP 响应程序的位置是根据正在验证的证书隐式确定的。当证书中缺少权威信息访问扩展(在 RFC 3280 中定义)或需要覆盖时,将使用该属性。

如果您的 OCSP 响应者的证书与颁发者的证书不匹配,那么您可以通过设置来设置备用主题名称

Security.setProperty("ocsp.responderCertSubjectName", ...);
Run Code Online (Sandbox Code Playgroud)

默认情况下,OCSP 响应方的证书是正在验证的证书颁发者的证书。当默认值不适用时,此属性标识 OCSP 响应程序的证书。它的值是一个字符串专有名称(在 RFC 2253 中定义),用于标识在证书路径验证期间提供的证书集中的证书。如果仅凭使用者名称不足以唯一标识证书,则必须同时使用 ocsp.responderCertIssuerName 和 ocsp.responderCertSerialNumber 属性。设置该属性后,这两个属性将被忽略。

有关可用于配置 OCSP 的所有属性的描述,请参阅JavaTM PKI 程序员指南


为什么我们需要充气城堡 OCSP 支持而不仅仅是设置此属性?

没有人说你必须使用充气城堡作为安全提供者。至少在使用 JRE 1.8 的情况下,使用默认的 sun JCE 是没问题的。