记录开启TLSv1.3

 Linux  TLS  nginx   2019-02-28 10:41 

本站早先启用了HTTPS+HTTP2,现在也支持TLSv1.3,更多了解TLSv1.3,可以查看WIKI

这篇文章仅记录过程。

环境:

    1. CentOS7.4

    2. 存在yum安装的nginx,版本是1.14;系统的openssl版本是1.0.2k(这俩是之前启用H2时升级的)

启用TLSv.13思路:

    核心就是让nginx和openssl支持。目前 Nginx 1.13 以上的版本支持 TLS 1.3 版本,而 OpenSSL 1.1.1 版本支持 TLS 1.3 版本。

    所以版本要大于上面两个即可。

    虽然nginx版本到了,但是由于yum安装的,又不升级系统本身的openssl,所以只能卸载再编译安装nginx。

步骤:

    升级时间是2019-02-27,当天nginx最新版本是nginx-1.15.9,openssl最新版本是1.1.1b

    1. 下载、编译、安装

cd /usr/local/src/
yum install -y wget jemalloc
wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz
wget http://nginx.org/download/nginx-1.15.9.tar.gz
tar zxf openssl-1.1.1b.tar.gz
tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=../openssl-1.1.1b --with-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers' --with-ld-opt=-ljemalloc
make
make install

    2. 卸载原有nginx并更新新的nginx配置

    不需要yum安装的nginx了,卸载就行,省的回头不小心乱了,同时将配置文件迁移到新的中,要修改使其支持TLSv1.3。

    修改的地方:

        2.1 ssl on,去掉,改为listen 443 ssl http2,为什么?nginx1.15.0更改的。不然会触发如下警告:

            nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /usr/local/nginx/conf/xx.conf:7

        2.2 协议和加密套件的配置(个人示例):

            ssl_protocols TLSv1 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;

        2.3 注意!所有支持HTTPS的配置文件都要更新协议和加密套件使其支持TLSv1.3,否则单个不生效!

            我碰到了这个问题,后来查到这篇文章,修改了所有的解决问题。

    3. 验证

        3.1 可以到https://myssl.com/验证HTTPS的网站

        3.2 Chrome、Firefox等现代浏览器支持了TLSv1.3,我用的chrome72.0.3626.119,F12打开开发者工具-Security,如图:

企业微信截图_20190228102911


附录:

    1. 给编译安装的nginx一个系统服务脚本:centos7centos6或5

    2. nginx ssl配置完整示例:

server {
    listen 80;
    listen 443 ssl http2;
    server_name xxx;
    charset utf-8;
    access_log /var/log/nginx/access.log main;

    ssl_certificate certs/full_chain.pem;
    ssl_certificate_key certs/private.key;
    #OCSP Stapling开启,OCSP是用于在线查询证书吊销情况的服务,使用OCSP Stapling能将证书有效状态的信息缓存到服务器,提高TLS握手速度
    ssl_stapling on;
    #OCSP Stapling验证开启
    ssl_stapling_verify on;
    #用于查询OCSP服务器的DNS
    resolver 8.8.8.8 114.114.114.114 valid=300s;
    #查询域名超时时间
    resolver_timeout 5s;
    #SSL优化配置
    #Session Cache,将Session缓存到服务器,这可能会占用更多的服务器资源
    ssl_session_cache builtin:1000 shared:SSL:10m;
    #开启浏览器的Session Ticket缓存
    ssl_session_tickets on;
    #SSL session过期时间
    ssl_session_timeout  10m;
    #只启用 TLS 系列协议
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    #加密套件,这里用了CloudFlare's Internet facing SSL cipher configuration
    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;
    #由服务器协商最佳的加密算法
    ssl_prefer_server_ciphers on;
    #开启HSTS,并设置有效期为9460800秒(9个月),包括子域名(根据情况可删掉):includeSubdomains,预加载到浏览器缓存(根据情况可删掉)
    add_header Strict-Transport-Security "max-age=15768001; preload";

    #禁止被嵌入框架
    #add_header X-Frame-Options DENY;
    #防止在IE9、Chrome和Safari中的MIME类型混淆攻击
    add_header X-Content-Type-Options nosniff;
    #处理静态资源:
    location ~ ^\/static\/.*$ {
        root /xxx;
        access_log off;
    }
    location / {
       proxy_pass http://127.0.0.1:110;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


点赞 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

交流分享

QQ扫一扫或点击二维码加入,群号577543189
微信扫一扫,手滑关注它
微信扫一扫,进入小程序

推荐文章

标签云集

友情链接  交换友链

推广位