Isaac Chen's Kaleidoscope
Be immersed.
关于
文章分类
常用标签
Nginx的OCSP Stapling配置
2020-02-28 |Isaac Chen | Server

前言
尽管相对于 HTTP ,HTTPS 在安全性上已经有了质的飞跃,然而简单的设置 HTTPS 仍无法避免类似于中间人攻击这样的恶意行为。OCSP Stapling在一定程度上能够防范这种行为。

什么是 OCSP Stapling
OCSP (Online Certificate Status Protocol) 通常由 CA 提供,用于在线实时验证证书是否合法有效,这样客户端就可以根据证书中的 OCSP 信息,发送查询请求到 CA 的验证地址,来检查此证书是否有效。

然而这些默认查询 OCSP 的客户端在获得查询结果的响应前势必会一直阻塞后续的事件,在网络情况堪忧的情况下(尤其是大陆地区)会造成较长时间的页面空白。

而 OCSP Stapling ,顾名思义,是将查询 OCSP 接口的工作交给服务器来做,服务器除了可以直接查询 OCSP 信息,还可以仅进行少数次查询并将响应缓存起来。当有客户端向服务器发起 TLS 握手请求时,服务器将证书的 OCSP 信息随证书链一同发送给客户端,从而避免了客户端验证会产生的阻塞问题。由于 OCSP 响应是无法伪造的,因此这一过程也不会产生额外的安全问题。

Nginx中开启
在域名对应配置中添加如下:

ssl_stapling on;
ssl_stapling_verify on; 
ssl_trusted_certificate  /root/.acme.sh/isaacchen.cn/fullchain.cer;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 2s;

Tips:Nginx中ssl_certificate需进行如下操作:

[email protected]:~/.acme.sh/isaacchen.cn# cat isaacchen.cn.cer ca.cer > bundle.cer

否则会出现如下错误:

--2020-02-27 23:53:43--  https://blog.isaacchen.cn/
Resolving blog.isaacchen.cn (blog.isaacchen.cn)... 194.156.230.154
Connecting to blog.isaacchen.cn (blog.isaacchen.cn)|194.156.230.154|:443... connected.
ERROR: The certificate of ‘blog.isaacchen.cn’ is not trusted.
ERROR: The certificate of ‘blog.isaacchen.cn’ doesn't have a known issuer.

nginx日志:

2020/02/27 11:22:42 [error] 19445#19445: OCSP_basic_verify() failed (SSL: error:27069076:OCSP routines:OCSP_basic_verify:signer certificate not found) while requesting certificate status, responder: ocsp.int-x3.letsencrypt.org, peer: 23.10.252.33:80, certificate: "/root/.acme.sh/isaacchen.cn/isaacchen.cn.cer"

提升OCSP查询速度
每隔5分钟Nginx都要重新查询一次OCSP,因此可以将其缓存在本地进行查询:

# 下载根证书和中间证书
wget -O root.cer https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem
wget -O letsencrypt.cer https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
 
# 生成 OCSP Stapling 验证文件
cat letsencrypt.cer root.cer > ocsp.cer

并修改conf如下:

ssl_trusted_certificate  /root/.acme.sh/isaacchen.cn/ocsp.cer;

验证是否成功启用
SSL Labs能够对服务器SSL配置进行检查,结果如下:
SSLret.png
如下图所示:
OCSPret.png
表示OCSP Stapling已开启
Tips:如果服务器开启了TLS 1.0/1.1的支持,则Protocol Support只能得到B的评分。
(本站现仅支持TLS 1.2/1.3)


Nginx
Server
respond-post-6
    February 28th, 2020 at 12:57 pm

    嘤嘤嘤

      February 28th, 2020 at 04:22 pm

      你走

添加新评论

请填写称呼
请填写合法的E-mail地址
请填写合法的网站地址
请填写内容

captcha