1、简介
TLS和加密连接在网络性能方面总是会带来轻微的开销。HTTP/2能帮助解决这个问题,但TLS 1.3通过TLS错误启动和零往返时间(0-RTT)等功能帮助加速加密连接。
简单地说,在TLS 1.2中,需要两次往返才能完成TLS握手。使用TLS 1.3时,它只需要一次往返, 这又将加密延迟减半。这有助于这些加密连接比以前更快一点。所以说优点如下:
- 更快的访问速度
- 增强安全性
- 可以减少 TLS 握手的时间
2、宝塔面板开启TLS 1.3
当我们申请SSL证书后,最新版本的宝塔面板是默认开 ssl_ciphers 启TLS 1.3协议的。注意,如果你这里没有TLS 1.3,可以在 ssl_protocols 这一行后面加上 TLSv1.3 即可,看图:
虽然开启了TLS 1.3,不过这样是不行的。我们去SSL评分下,发现会是B。如图:
This server supports TLS 1.1. Grade capped to B.(因为服务器支持TLS 1.1,所以为B)
3、删除TLS 1.1协议
1)删除TLS 1.1也很简单,在网站配置文件中,删除TLS 1.1,只保留TLSv1.2 TLSv1.3即可。如图:
2)一些坑需要注意:如果你的服务器有好几个站点,并且都配置了SSL,那么你需要删除所有站点的TLS 1.1,不然,你检测会是一直B。
4、配置TLS 1.3
删除TLS 1.1之后,我们只保留删除TLS 1.2和TLS 1.3,额如果激进一点,可以只保留一个TLS 1.3。之后,我们修改下: ssl_ciphers 具体如下:
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:!MD5;
看图:
5、测试效果
在线检测地址 :
https://www.ssllabs.com/ssltest/analyze.html
额,竟然是A,看来还是不完美啊。
看到DNS CAA No 看来我们还需要设置下这个。
6、设置DNS CAA(可选)
这个玩意建议使用CAA记录自动在线生成来搞定。
1)点开网页后输入域名,选择Auto-Generate Policy
2)找到Publish Your CAA Policy,如图:
现在我们可以设置dns记录了。
7、设置HSTS Preload
1)就算设置了DNS CAA,我们得到的评分依然是A,所以还差了最重要的一步,就是设置设置HSTS Preload。额,最简单的设置就是一行代码,如下:
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
2)如何放置呢,nginx服务器只需要放置到你的 HTTPS 配置的 server 块中即可,宝塔面板这样放即可。如图:
3)A+来了,设置好保存,我在此检测,发现A+到手。
8、设置DNS
这里以cloudflare为例,国内DNS商家目前基本都支持了CAA记录了。如何设置看图:
设置好保存即可。我们在去检测下,效果如图:
设置成功。
9、设置DNSSEC(可选配置)
一般情况下DNS CAA是和DNSSEC搭配起来使用的,不过国内的DNS服务商对于DNSSEC支持的不够好。这里还是以cloudflare为例。
1)启用DNSSEC
在cloudflare中点开自己的域名管理,在dns中,往下拉找到DNSSEC,点击启用即可。
启用之后,看到如下截图,按图设置即可。
2)设置DS记录
具体设置看图:
注意:
- 类型:选择DS
- 密钥标记:根据给你的数字,自己填写
- 算法:13
- 摘要类型:给你的设置中有。
- 摘要:也在给你的设置中,自己根据内容填写。
10、最后
1)DNS CAA 和 DNSSEC 这两个都是可选配置,可以不用倒腾。
2)TLS1.1需要删除,这样对于提高网站访问速度有一点帮助。
3)DNSSEC国内支持的很差,大家了解下即可。
4)如果不开启HSTS Preload无法得到A+,所以开不开HSTS Preload自己斟酌,不过开启HSTS Preload可以加快网站的访问速度。
附1:SSL文件配置生成:https://ssl-config.mozilla.org/
附2:本站的配置
server {
listen 443 ssl http2;
ssl_certificate /usr/local/openresty/nginx/conf/ssl/vpsyx.com.crt;
ssl_certificate_key /usr/local/openresty/nginx/conf/ssl/vpsyx.com.key;
# openssl dhparam -out dhparams.pem 2048
# https://weakdh.org/sysadmin.html
ssl_dhparam /usr/local/openresty/nginx/conf/ssl/dhparams.pem;
# openssl rand 48 > session_ticket.key
# 单机部署可以不指定 ssl_session_ticket_key
ssl_session_ticket_key /usr/local/openresty/nginx/conf/ssl/session_ticket.key;
# https://github.com/cloudflare/sslconfig/blob/master/conf
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:P-256:P-384:P-521;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_session_tickets on;
ssl_buffer_size 1400;
add_header Strict-Transport-Security "max-age=63072000";
ssl_stapling on;
ssl_stapling_verify on;
resolver 114.114.114.114 valid=300s;
resolver_timeout 10s;
server_name vpsyx.com www.vpsyx.com;
access_log off;
index index.html index.htm index.php;
root /www/vpsyx.com/current/public;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
if ($host != vpsyx.com) { return 301 $scheme://vpsyx.com$request_uri; }
include /usr/local/openresty/nginx/conf/rewrite/dingcms.conf;
#error_page 404 /404.html;
#error_page 502 /502.html;
location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv|mp4)$ {
valid_referers none blocked *.vpsyx.com vpsyx.com www.vpsyx.com;
if ($invalid_referer) {
return 403;
}
}
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {
deny all;
}
location /.well-known {
allow all;
}
}
server {
listen 80;
server_name www.vpsyx.com vpsyx.com;
server_tokens off;
access_log /dev/null;
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
location / {
rewrite ^/(.*)$ https://vpsyx.com/$1 permanent;
}
}
server {
listen 80;
#listen [::]:80;
server_name dash.vpsyx.com;
index index.html index.htm index.php default.html default.htm default.php;
root /www/vpsyx.com/current/superadmin;
include /usr/local/openresty/nginx/conf/rewrite/dingcms.conf;
#error_page 404 /404.html;
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log off;
}
文章来源:https://www.daniao.org/10398.html