我在 NGINX 中有这两个设置:
ssl_stapling on;
ssl_stapling_verify on;
以前这个功能可以正常工作,但在我重新安装操作系统后就停止工作了。我想知道问题可能出在哪里。此外,在 MITM 类型的场景中,ssl_stapling 和 ssl_stapling_verify 可以防御哪种类型的攻击?如果存在它可以防御的攻击,我该怎么做才能减轻攻击的有效性?
答案1
SSL 装订意味着有关服务器证书(即 OCSP 响应)的撤销信息与服务器证书一起包含在 TLS 握手中。目前,它更多的是一种流量优化,因为不需要额外的 OCSP 请求(浏览器通常不需要)。
如果浏览器坚持要获得 OCSP 响应,它将是一种安全功能。在这种情况下,它将阻止某些 MITM 使用已撤销的域证书来劫持流量并简单地阻止 OCSP 请求/响应。如果 OCSP 查询失败,浏览器通常会放弃,因此这种攻击可以奏效。但同样 - 大多数浏览器实际上不再使用 OCSP,而是使用替代(甚至更不可靠)机制 - 请参阅浏览器如何处理已撤销的 SSL/TLS 证书?。
使用 OCSP 装订的要求可能是证书本身的属性(OCSP-must-staple 扩展),即如果您有这样的证书但没有装订 OCSP 响应,则可能会导致失败。
答案2
证书有 CRL 列表,显示它已被撤销。Stapling 是实现此目的的另一种方法。如果您启用此功能,我认为您的证书颁发者也必须支持此功能。我在下面附上了一个链接,介绍了如何在 nginx 上进行设置。
https://www.digicert.com/kb/ssl-support/nginx-enable-ocsp-stapling-on-server.htm
从我目前所读到的内容来看,Stapling 似乎并不能防止 MITM。它只是改变了检查证书是否有效且未过期或被撤销的方式。