在 Qualys SSL Labs SSL 测试中获得 A+ 评级的秘技 2020版 - Nginx

作者:gc(at)sysin.org,主页:www.sysin.org

3. Nginx

Nginx SSL 证书配置方法

官方文档

server {
    listen       443 ssl;
    server_name  www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ...
}

证书文件使用 PEM 格式。

证书文件使用相对路径时,证书文件要放在主配置文件相同目录下(默认 /etc/nginx)。

更多配置,这篇文章可以参考:Strong SSL Security on nginx

TLSv1.3

版本支持如下:

  • The TLSv1.1 and TLSv1.2 parameters (1.1.13, 1.0.12) work only when OpenSSL 1.0.1 or higher is used.
  • The TLSv1.3 parameter (1.13.0) works only when OpenSSL 1.1.1 built with TLSv1.3 support is used.

More info on the NGINX documentation

HTTP/2

版本要求

openssl 的版本必须在 1.0.2e 及以上,执行以下命令验证:

openssl version

nginx 的版本必须在 1.9.5 以上,需要添加 --with-http_v2_module 模块,执行以下命令验证:

nginx -V

参考配置

以下配置:启用 HTTP/2、TLSv1.3、推荐的 Ciphers、HSTS,可以获得 A+ 得分

server {
    #listen       443 ssl;
    listen       443 ssl http2; # HTTP/2 Enable
    listen       [::]:443 ssl http2; # IPv6
    server_name  www.sysin.org;
    ssl_certificate     www.sysin.org.crt;
    ssl_certificate_key www.sysin.org.key;
    ssl_protocols       TLSv1.2 TLSv1.3; # Requires nginx >= 1.13.0 else use TLSv1.2
    ssl_ciphers         HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;
    ...
}

    #ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    #ssl_ciphers  HIGH:!aNULL:!MD5;  #B
    #ssl_ciphers  HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA;  #A
    #ssl_ciphers  ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4;  #B
    #ssl_ciphers  ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;  #A (Mozilla Intermediate)

猜你喜欢

转载自blog.csdn.net/netgc/article/details/108257981
SSL