LNMP 1.5 使用 OpenSSL 1.1.1 开启 TLSv1.3 支持

8 Comments

以前使用 OpenSSL 1.1.1 dev draft-18 开启过 TLSv1.3,那时候浏览器都得手工开启才支持 TLSv1.3,所以基本上纯属自娱自乐。八月份 TLS 1.3 正式发布,九月份 OpenSSL 1.1.1 正式版……

Chrome 70+ 版本默认开启 TLS 1.3 Final 支持;Firefox 63+ 也默认支持……

博友 kn007 大佬折腾 TLS 1.3;可乐没气的猫也有个教程:使用 NGINX 与 OPENSSL- 1.1.1开启 TLSV1.3;比较相近的还有 24点半 的教程——用自定义 OpenSSL 版本编译 Nginx 以支持 TLS 1.3&Nginx 安装 Lua 扩展教程

当然了,我还是通过 lnmp1.5 nginx 升级脚本升级 nginx 来把 OpenSSL 1.1.1 编译进去。技术菜,只会这么干。

修改 lnmp1.5 脚本文件

首先是 \lnmp1.5\include\version.sh 文件,将 Openssl_Ver='openssl-1.0.2o' 修改为:Openssl_Ver='openssl-1.1.1a'

然后修改 \lnmp1.5\lnmp.conf 文件,将 Nginx_Modules_Options='' 改为:Nginx_Modules_Options='--with-openssl-opt=enable-weak-ssl-ciphers'注:enable-weak-ssl-ciphers 作用是让 OpenSSL 继续支持 3DES 等不安全 Cipher Suite,如果你打算继续支持 IE8,才需要加上这个选项;若不需要支持 XP IE8 访问可忽略此处修改

使用 lnmp1.5 脚本升级 nginx

注意,升级有风险,最好先快照备份。

进入 lnmp1.5 目录,执行命令:

./upgrade.sh nginx

然后输入需要升级的 nginx 版本号,如目前最新的 1.15.7。nginx 最新版本号可从官网获取:http://nginx.org

静待编译完成。

Checking ...
Program will display Nginx Version......
nginx version: nginx/1.15.7
======== upgrade nginx completed ======

执行 nginx -V 可查询详细配置信息:

nginx version: nginx/1.15.7
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.1.1a 20 Nov 2018
TLS SNI support enabled
configure arguments: --user=www --group=www --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=/root/lnmp1.5/src/openssl-1.1.1a --with-openssl-opt=enable-weak-ssl-ciphers

修改主机配置文件

ssl_protocols 加入 TLSv1.3 支持,如:ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

ssl_ciphers 参考配置(via:JerryQu):

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:!MD;

Cloudflare 推荐配置会报错,应该是因为我没有给 OpenSSL 打上 hakasenyang 大神 Patch 补丁所致,没有继续折腾,直接用以前用过的配置。

Cloudflare 目前推荐配置如下:

ssl_protocols               TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ecdh_curve X25519:P-256:P-384:P-224:P-521;
ssl_ciphers '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305|ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256:ECDHE+3DES:RSA+3DES';
ssl_prefer_server_ciphers on;

文件修改完,重启一下 nginx,然后就可以去浏览器访问验证一下。

TLSv1.3 是否开启成功验证

1、Chrome 70+ 版本打开网站,F12 打开开发者工具,「Security」可以看到 Connection - secure (strong TLS 1.3) 字样信息。

2、Firefox 63+ 版本打开网站,F12 打开开发者工具,「网络」,刷新页面,在「网络」资源列表下随便选中一个本站链接或者打开页面的链接,然后在右侧详细信息查看「安全性」即可看到连接协议版本。

 977-firefox-tls13

3、在线检测:https://www.ssllabs.com,还能检测兼容性。

浏览器支持情况:https://caniuse.com/#feat=tls1-3

历史相关文章

本博客开始支持 TLS 1.3

TLS 1.3 目前只是 draft 版本,而支持 TLS 1.3 的 OpenSSL 1.1.1 的 draft-18 分支也只是开发者版本,所以,暂时最好不要用在生产环境。 (更多…...
声明:除非注明,常阳时光文章均为原创
本文地址:https://cyhour.com/977/
转载时必须以链接形式注明原始出处。
Views: 209 Tags:  ,  ,  , 

Comments:8

  1. 这方面我是能用就行了,自己搞还是不太懂,话说LNMP一键安装包内存使用率高吗?

    2018.11.30 22:28 # 回复
    1楼
    • @山小炮 折腾多了多少懂点皮毛。内存的话以前 512的机子就够用,现在2G,也是要占用1G+不过好像这个占用是 Linux 的机制?

      2018.11.30 22:36 # 回复
  2. 宝塔面板折腾TLS1.3貌似不太容易,只会用现成的。

    2018.12.01 13:51 # 回复
    2楼
  3. 明天试一下😄

    2018.12.07 23:30 # 回复
    3楼

发表留言

炒蛋:Vultr 送$25 | 搬瓦工年付$19补货,优惠码 BWH26FXH3HIQ | 推荐VPS信息