#常规OCSP (RFC 6960)我编写了一个OCSP响应程序,其响应基于RFC 6960,其中指出:
如果未设置nextUpdate,响应程序将指示始终可用较新的吊销信息。
因此,我没有设置nextUpdate,而是像这里一样使用BouncyCastle BasicOCSPRespBuilder (默认设置thisUpdate,也可以在Wireshark中看到):
basicOCSPRespBuilder.addResponse(certID, responseList.get(certID));但是,IIS中的证书身份验证器拒绝了这些响应。在尝试时,响应状态总是“过期”。

这是使用"certutil -url“命令进行验证的。
#轻量级OCSP (RFC 5019)一段谷歌显示,微软支持轻量级OCSP,如RFC 5019所述:
客户端必须检查nextUpdate字段的存在,并且必须确保当前时间(如2.2.4节所描述的GMT时间表示)介于thisUpdate和nextUpdate时间之间。如果没有nextUpdate字段,则客户端必须拒绝响应。
因此,我修改了实现以包括一个nextUpdate日期(未来几分钟),如下所示:
basicOCSPRespBuilder.addResponse(certID, responseList.get(certID), getNextUpdateDate(), null);这使我摆脱了“过期”状态问题,但现在的问题是,当部署到when服务器并尝试执行"certutil -url“检查时,它将返回证书中WebProxy链接的”验证“,但如果我直接提供服务器的URL,则会显示"OK”。响应结构在这两种情况下都保持不变,因为它是相同的响应程序(使用Wireshark捕获验证,如果您愿意的话,我也可以附加这个)。

这个有趣的事实是,发送到服务器的OCSP请求在via WebProxy和Direct的情况下是不同的。区别在于OCSP请求在将请求发送到直接链接时不包括issuerKeyHash。
Wireshark捕获发送给Webproxy的OCSP请求,该请求返回“验证”:-

Wireshark捕获发送到直接链接的OCSP请求,返回状态为"OK“:-

问题是,为什么请求在其中一个中包含issuerKeyHash,而在另一个实例中却不包含。此外,尽管来自服务器的OCSP响应是相似的(由Wireshark Caputres确认),为什么这两个查询的状态并不相同。
我也将感谢任何有洞察力的文件/链接的“网址检索工具”或"certutil -verify“在这方面。
我也可以包括Wireshark捕获请求。
由于OCSP响应被Java、openssl等接受,所以我没有将Java和Bouncy城堡作为标记包括在内,没有任何问题( RFC 6960中有或没有nextUpdate )。这个问题是为了了解Microsoft的情况&这里的OCSP检查。
#更新#1 --开始更新#1
正如@Crypt32 32所建议的那样,我可以验证,在使用URL字段中的URL时,由于未知的原因以及缺少的IssuerKeyHash,没有构建完整的证书路径。
假设响应始终包含IssuerKeyHash,这可能导致“确定”而不是“验证”状态。为了确认这一点,我修改了响应以匹配请求,如果请求中没有发送IssuerKeyHash,则不会发送它,但是状态保持“确定”,并且没有更改为“验证”。
这样做的目的是正确理解Microsoft应用程序如何处理OCSP响应,以及如何正确地实现Responder,从而使任何Microsoft应用程序都不会在表面上崩溃。
研究正在进行中,任何建议和建议不胜感激!
-最后更新#1
发布于 2018-02-22 09:00:18
Re.nextUpdate
微软使用轻量级的OCSP,因此需要thisUpdate和nextUpdate作为强制性的,如RFC 5019中所引用的那样。
Re.尾突
由于@Crypt32 32,有关certutil的查询现在已经澄清。
Re.IssuerKeyHash
在certutil的"URL“框中使用自定义URL时,不会生成完整的证书链,从而导致没有IssuerKeyHash的OCSP请求。
标准CryptoAPI客户端从不发送带有空IssuerKeyHash的OCSP请求,这只是一个特殊的certutil行为,可能会被忽略,因为它也可能在Windows服务器上失败(在我的终端也用Microsoft验证)
发布于 2021-02-04 08:07:34
"certutil -url“的详细信息
只能部分回答。
"CertUtil“是微软通用的证书/PKI工具。它能做很多事情。
现在,这个URL Retrieval Tool GUI是用"-url“参数启动它时发生的事情。
我发现有一点奇怪的是,-URL参数没有公开记录。
-URLCache和-urlfetch,但没有-url:PS C:> Get- CertUtil选择-expand fileversioninfo \ fl文件名,fileversion filename : C:\WINDOWS\system32\certutil.exe FileVersion : 10.0.19041.1 (WinBuild.160101.0800) PS C:> certutil -v -?select-string‘-url’-URLCache -显示或删除URL缓存条目certutil Options -URLCache [URL * delete] -urlfetch -检索和验证AIA和CDP CRLs但是它确实有一些帮助文本,如果你特别要求的话:
C:\> certutil.exe -URL -?
Usage:
CertUtil [Options] -URL InFile | URL
Verify Certificate or CRL URLs
Options:
-f -- Force overwrite
-Unicode -- Write redirected output in Unicode
-gmt -- Display times as GMT
-seconds -- Display times with seconds and milliseconds
-split -- Split embedded ASN.1 elements, and save to files
-v -- Verbose operation
-privatekey -- Display password and private key data
-pin PIN -- Smart Card PIN
-sid WELL_KNOWN_SID_TYPE -- Numeric SID
22 -- Local System
23 -- Local Service
24 -- Network Service
CertUtil -? -- Display a verb list (command list)
CertUtil -URL -? -- Display help text for the "URL" verb
CertUtil -v -? -- Display all help text for all verbs要想获得"URL检索工具“GUI,您可以像这样启动certutil。
C:\> certutil -url http://example.com

https://stackoverflow.com/questions/48823807
复制相似问题