nginx优化https(ocsp)

前言

当用户使用客户端或其他的设备访问https网站时,需要先验证https证书,验证方式有两种:

  • 证书颁发机构(ca)的证书吊销列表(CRL),CRL列出被认为不能再使用的证书的序列号。客户端通过访问CRL来验证网站证书是否有效。

  • 在线证书状态协议(ocsp),其OCSP查询地址是http://ocsp.int-x3.letsencrypt.org/,浏览器需要发送请求到这个地址来验证证书状态。

在线证书状态协议(OCSP)克服了证书注销列表(CRL)的主要缺陷:必须经常在客户端下载以确保列表的更新。当用户试图访问一个服务器时,在线证书状态协议发送一个对于证书状态信息的请求。服务器回复一个“有效”、“过期”或“未知”的响应。协议规定了服务器和客户端应用程序的通讯语法。在线证书状态协议给了用户的到期的证书一个宽限期,这样他们就可以在更新以前的一段时间内继续访问服务器。
ocsp比crl方式更加高效,但ocsp也存在一些问题,实时查询证书会给客户端带来一定性能影响,另一方面需要访问ca提供的第三方中心话验证服务器,如果这个第三方验证服务出现问题,或被攻击,将会导致ocsp验证失败。
这里我们推荐更先进的OCSP stapling。

什么是OCSP stapling?

正式名称为TLS证书状态查询扩展,可代替在线证书状态协议(OCSP)来查询X.509证书的状态。服务器在TLS握手时发送事先缓存的OCSP响应,用户只需验证该响应的有效性而不用再向数字证书认证机构(CA)发送请求。说白了,服务器代替客户端去进行OCSP查询,缓存查询结果,然后在与客户端进行TLS连接时返回给客户端。

Nginx 配置 OCSP stapling
我使用的环境如下:

CentOS/7.7.x
NginX /1.12.x # 它从 1.3.7+ 开始支持OCSP stapling特性。

nginx配置
        listen 443 ssl;
        ssl_certificate /etc/nginx/ssl/xxx.com/cert.pem;
        ssl_certificate_key /etc/nginx/ssl/xxx.com/key.pem;

        ssl_stapling on;
        ssl_stapling_verify on;# 启用OCSP响应验证,OCSP信息响应适用的证书
        ssl_trusted_certificate /path/to/xxx.pem;#选项应指向CA的根证书
        resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=60s;#添加resolver解析OSCP响应服务器的主机名,valid表示缓存。
        resolver_timeout 2s;# resolver_timeout表示网络超时时间

注:这里用https://github.com/acmesh-official/acme.sh生成的免费https证书,ssl_trusted_certificate 所用到的证书文件一般在/root/.acme.sh/域名/ca.cer
nginx可以直接配置成

 ssl_trusted_certificate  /root/.acme.sh/域名/ca.cer;
检测

检查https网站是否开启OCSP stapling有两种方法:
1.SSL Labs https://www.ssllabs.com/ssltest/index.html
如果开启返回
OCSP stapling Yes
2.通过命令

openssl s_client -connect admin.xxx.com:443 -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response"

开启结果为:

OCSP response: 
OCSP Response Data:
    OCSP Response Status: successful (0x0)
    Response Type: Basic OCSP Response

参考资料

http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ocsp_cache
https://blog.sometimesnaive.org/article/13.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值