nginx 的 HTTPS 安全配置及 TLS 1.3 踩坑

本文介绍了如何通过nginx配置防止通过IP访问时暴露域名,包括创建默认证书和使用`ssl_reject_handshake`指令。同时,探讨了TLS安全配置,推荐了符合PCIDSS标准的TLS1.2协议和安全加密套件。最后,提到了TLS1.3的使用,强调了其安全性和速度优势,但需要注意兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

防止默认配置导致暴漏域名

通过IP扫描,然后浏览器HTTPS访问会在证书里暴漏网站域名。

或者通过访问已知的,未配置HTTPS证书的域名,会暴漏有证书的第一个域名

有两种方式,一种是生成一个证书配置一个default_server。

一种是通过nginx 1.19.4 以后的ssl指令配置default_server。

生成证书配置默认网站

生成localhost证书:

cd /usr/local/nginx/conf/ssl/
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout localhost.key
 -out localhost.crt

配置默认网站:

server {
        listen 80 default_server;
        listen 443 ssl default_server;
        server_name _;
        ssl_certificate         ssl/localhost.crt;
        ssl_certificate_key     ssl/localhost.key;
        return 444;
    }

通过IP访问不会再暴漏域名

ssl_reject_handshake 指令

nginx版本大于 1.19.4可以使用该指令,无需创建假证书

http://nginx.org/en/docs/http/ngx_http_ssl_module.html

server {
        listen 80 default_server;
        listen 443 ssl default_server;
        server_name _;
        ssl_reject_handshake on;
        return 444;
    }

TLS安全配置

PCI DSS合规认证需要TLS 1.2

查看:https://ssl-config.mozilla.org/

看到TLS 1.2已经是默认配置,并且:

Supports Firefox 27, Android 4.4.2, Chrome 31, Edge, IE 11 on Windows 7, Java 8u31, OpenSSL 1.0.1, Opera 20, and Safari 9

XP系统安装chrome完美支持TLS 1.2,绝大多数环境都能够很好的工作。

XP可用的chrome 49
链接:https://caiyun.139.com/m/i?175CjfVEgFn0o
提取码:Tbo2

kb931125-rootsupd,XP证书补丁kb931125
链接:https://caiyun.139.com/m/i?175CdDrzQiA5d
提取码:SDKS

重点就是:ssl_ciphersssl_prefer_server_ciphers

因为RC4,md5、sha1、des等算法都是不安全的

TLSv1.3 需要openssl 1.1.1版本,目前国内大型网站都未使用,Apple,Mozilla、GitHub都是使用的,握手时间更短,算法更安全。

	ssl_protocols TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

OCSP stapling一般只有Apple系需要

可以通过curl测试,Linux版的curl的tls选项都是正常的,Windows版的向下兼容,不够准确。

curl -I --tlsv1.2 https://www.baidu.com

openssl s_client -host www.baidu.com -port 443 -msg -state -showcerts -tls1_2

TLS 1.3 使用

安装nginx时,需要指定openssl 1.1.1版本

单个域名开启无效,需要default_server中开启。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值