在启用 IIS SNI 的网站上启用 OCSP 装订

在启用 IIS SNI 的网站上启用 OCSP 装订

如果在 IIS 站点的绑定上选中了“需要服务器名称指示”,则会为该站点禁用 OCSP 装订。

可以通过为当前不需要 SNI 的站点启用 SNI 并检查来轻松确认这一点https://www.ssllabs.com/ssltest/或 openssl:

openssl s_client -connect foobar.com:443 -servername foobar.com -tls1 -tlsextdebug -status

是否有人可以解决这个问题,以便启用 SNI 的站点的客户端可以享受 OCSP 装订的好处?

答案1

EnableOcspStaplingForSni在下面创建一个 DWORD 注册值HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel\并将其设置为非零值。

答案2

据微软称,由于潜在的性能问题,此行为默认是禁用的。

要为 SNI 和 CCS 绑定启用 OCSP 装订,请找到以下注册表子项:"EnableOcspStaplingForSni"=dword:00000001注册表路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]

Powershell 代码片段:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\" -Name "EnableOcspStaplingForSni" -PropertyType DWord -Value 1

Microsoft 参考文章,该文章涉及 Windows 2012 Server,我已经对其进行了测试,并且它仍然适用于 2016 年。

OCSP 装订

在线证书状态协议 (OCSP) 装订使 Web 服务器(例如 Internet 信息服务 (IIS))能够在 TLS 握手期间将服务器证书发送到客户端时提供服务器证书的当前吊销状态。此功能减少了 OCSP 服务器上的负载,因为 Web 服务器可以缓存服务器证书的当前 OCSP 状态并将其发送到多个 Web 客户端。如果没有此功能,每个 Web 客户端都会尝试从 OCSP 服务器检索服务器证书的当前 OCSP 状态。这会在该 OCSP 服务器上产生高负载。

默认情况下,具有简单安全 (SSL/TLS) 绑定的 IIS 网站会启用 OCSP 支持。但是,如果 IIS 网站使用以下任一或两种类型的安全 (SSL/TLS) 绑定,则默认情况下不会启用此支持:

  • 要求指示服务器名称

  • 使用集中证书存储

在这种情况下,TLS 握手期间的服务器 hello 响应默认不会包含 OCSP 装订状态。此行为可提高性能:Windows OCSP 装订实现可扩展到数百个服务器证书。由于 SNI 和 CCS 使 IIS 能够扩展到数千个可能拥有数千个服务器证书的网站,因此将此行为设置为默认启用可能会导致性能问题。

笔记启用此注册表项可能会对性能产生影响。

相关内容