Nginx 配置 OCSP Stapling 优化 HTTPS 访问
前言
由于国内网络对 Let's Encrypt 域名证书的 OSCP 服务器域名进行了 DNS 污染,用户在访问网站时,请求 OSCP 服务器的过程会导致网站访问速度很慢.本文将介绍如何通过配置网站的 nginx 来预先装订 OCSP 证书,达到优化 https 访问速度的效果.
配置流程
修改 nginx 域名 conf 文件
修改域名 conf 文件,在证书信息下加入以下代码:
ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /path/to/full_chain.pem; resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off; resolver_timeout 5s;
full_chain.pem
为完整证书链证书./path/to/full_chain.pem;
修改为证书实际绝对路径.由于国内 VPS 服务器访问 OCSP 服务器可能会被污染而导致失败,所以添加
resolver
来解决此问题.
docker 环境执行 docker exec nginx nginx -t 检查,执行 docker exec nginx nginx -s reload 重载 nginx 生效.
检查生效
在客户端,例如 macOS Linux 等系统下执行以下命令检查是否生效:
openssl s_client -connect www.yourdomain.com:443 -servername www.yourdomain.com -status -tlsextdebug < /dev/null 2>&1 | grep -i "OCSP response" # 将命令中 www.yourdomain.com 改为你的域名
未生效结果
OCSP response: no response sent
成功生效结果
OCSP response: OCSP Response Data: OCSP Response Status: successful (0x0) Response Type: Basic OCSP Response
参考示例
upstream dockername { server 127.0.0.1:8080; } server { listen 80; server_name www.yourdomain.com; return 301 https://www.yourdomain.com$request_uri; } server { listen 443 ssl; server_name www.yourdomain.com; gzip on; ssl_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt; ssl_certificate_key /usr/local/nginx/conf/ssl/www.yourdomain.com.key; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt; resolver 8.8.8.8 8.8.4.4 valid=60s ipv6=off; resolver_timeout 5s; # access_log /var/log/nginx/dockername_access.log combined; # error_log /var/log/nginx/dockername_error.log; location / { proxy_redirect off; proxy_pass http://dockername; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; client_max_body_size 100m; client_body_buffer_size 128k; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } }
结语
如果是境外 VPS 服务器,可以无需上述代码中含有resolver
的两行代码,手动删除即可.国内 VPS 可试情况修改参数中的 DNS 地址来测试是否生效.
本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面