如何让网站达到ssl评级A+——本站开启tls1.3

本文介绍了使用docker快速创建nginx服务,并介绍了如何配置tls1.3的方法,让网站的ssl

先上图片:

对如何评到A以及A+不是很理解,这里简单的说明一下。

首页说明一下这个评分,并不仅仅是针对于证书的部署情况而言的,这是一个多方面综合的评级,其中包括了证书SSL协议加密套件漏洞不安全的外链等等。

具体步骤:

  • docker方式安装Nginx
  • 配置nginx
  • 验证TLS

安装nginx

推荐使用这个镜像:docker pull khs1994/nginx:1.19.7-alpine

仓库地址:https://github.com/khs1994-docker/nginx

docker-compose配置:

1
2
3
4
5
6
7
8
9
10
11
12
version: "3"

services:
nginx:
image: "khs1994/nginx:1.19.7-alpine"
ports:
- "80:80"
- "443:443"
environment:
- TZ=Asia/Shanghai
volumes:
- ./conf.d:/etc/nginx/conf.d:ro

其中 ./conf.d 是相对于nginx的配置目录。

配置nginx

在 Nginx 的站点配置中,下面是我们推荐的配置内容:

1
2
3
4
5
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5';

add_header Strict-Transport-Security "max-age=31536000";

包含 TLS13 是 TLS 1.3 新增的 Cipher Suite,加在最前面即可;如果你不打算继续支持 IE8,可以去掉包含 3DES 的 Cipher Suite。

有几点需要注意:

  • 删除TLSv1的支持
  • 添加头部:Strict-Transport-Security
  • 配置ssl_ciphers

验证是否支持 TLS 1.3

目前最新版 Chrome 和 Firefox 都支持 TLS 1.3,但需要手动开启:

  • Chrome,将 chrome://flags/ 中的 Maximum TLS version enabled 改为 TLS 1.3(Chrome 62 中需要将 TLS 1.3 改为 Enabled (Draft),感谢 @TsuranSonoda 指出);
  • Firefox,将 about:config 中的 security.tls.version.max 改为 4

推荐:

  1. 英文: Qualys SSL Labs’s SSL Server Test
  2. 中文: MySSL 也支持验证服务端是否支持 TLS 1.3,非常方便,推荐。