如何配置Nginx只使用TLS 1.2/1.3

时间:2019-11-20 08:52:50  来源:igfitidea点击:

TLS是传输层安全性的首字母缩写。它是旨在提供网络通信安全性的加密协议。
如何配置Nginx Web服务器只能使用TLS 1.2和1.3协议?

如何检查Nginx版本

$ nginx -V
$ nginx -v

如何检查OpenSSL版本

运行:

$ openssl version

在Nginx Web服务器中只启用TLS 1.2

编辑nginx.conf:

$ sudo vi /etc/nginx/nginx.conf

或编辑虚拟主机:

$ sudo vi /etc/nginx/vhosts.d/theitroad.local

将ssl_protocols设置为:

ssl_protocols TLSv1.2;

如何在Nginx中启用TLS 1.3

如果需要支持TLS 1.2和1.3版本,在nginx配置文件中使用以下内容:

ssl_protocols TLSv1.2 TLSv1.3;

在nginx中只启用TLS版本1.3:

ssl_protocols TLSv1.3;

只启用TLS 1.3的配置示例:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server www.theitroad.local;
 
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SharedtheitroadSSL:10m; 
    ssl_session_tickets off;
 
    # TLS 1.3 only
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;
 
    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;
 
    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
 
    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/nginx/ssl/fullchain.pem;
 
    # replace with the IP address of your resolver
    resolver 8.8.8.8;
}

重新加载或重启Nginx

我们需要重启nginx服务使配置生效。

首先检查配置是否存在语法错误:

$ nginx -t

重新加载或重启nginx服务器:

$ sudo systemctl restart nginx

$ sudo service nginx restart

测试是否支持Nginx TLS 1.2

按如下所示运行curl命令

$ curl -I -v --tlsv1.2 --tls-max 1.2 https://www.theitroad.local/

测试是否支持Nginx TLS 1.3

$ curl -I -v --tlsv1.3 --tls-max 1.3 https://www.theitroad.local/

测试是否不支持Nginx TLS 1.1/1.0

$ curl -I -v --tlsv1 --tls-max 1.0 https://www.theitroad.local/
$ curl -I -v --tlsv1.1 --tls-max 1.1 https://www.theitroad.local/