前言
最近在看一些 TLS 协议 1.3 版本的相关知识,所以想分享一些信息,本文是第一篇,没有太多的理论细节,主要说下如何在 Nginx 上快速部署一个支持 TLS 1.3 协议版本的网站。
TLS 1.3 优势
TLS 1.3 相对于之前的版本,主要有两大优势:
Enhanced security: 安全性增强
Improved speed:速度提升
几个基本观点需要牢记。
1)截止到现在 TLS 1.3 协议仍然处于草案阶段,最新的 RFC 文档是 draft 28,对于大型系统来说,目前并不建议部署,当然对于个人网站来说,可以部署 TLS 1.3 版本 。
2)TLS 1.3 和 TLS 1.2 版本有很大的不同,从协议消息的角度来看,两者是不兼容的,也正因为此,大型系统目前不建议采用 TLS 1.3 版本。
关于这两个版本之间的差异,后续我会写文章详细描述。
3)Nginx 底层使用的密码库是 OpenSSL,也就是说是否支持 TLS 1.3 版本,取决于 OpenSSL 库。
目前 Nginx 1.13 以上的版本支持 TLS 1.3 版本,而 OpenSSL 1.1.1 版本支持 TLS 1.3 版本,最新的 OpenSSL 1.1.1-pre5 支持 TLS 1.3 draft 26。
这篇文章运行环境如下:
- Ubuntu 14.04.5 LTS 系统
- gcc version 4.8.4
- Nginx nginx1.13.5
- openssl1.1.1
如果大家在具体安装的时候,遇到各类问题,可能和软件版本、系统环境有关,需要查看手册或者在线 Google。
安装 OpenSSL
了解 TLS 1.3 版本,最好的工具就是 OpenSSL,所以第一步就是安装 OpenSSL 密码库和命令行工具。
运行如下命令:
$ cd /root # 下载源代码 $ wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1-pre1.tar.gz $ cd openssl-1.1.1-pre1 $ grep TLS1_3_VERSION_DRAFT_TXT ./* -R # 输出 draft 23 ./include/openssl/tls1.h:# define TLS1_3_VERSION_DRAFT_TXT "TLS 1.3 (draft 23)" $ ./config --prefix=/usr/local/openssl1.1.1 --openssldir=/usr/local/openssl1.1.1 --libdir=lib shared -Wl,-R,'$(LIBRPATH)' -Wl,--enable-new-dtags enable-ec_nistp_64_gcc_128 enable-tls1_3 $ make $ make install
- 在这个版本中,默认已经启用 TLS 1.3 ,所以不加 enable-tls1_3 参数也可以
- OpenSSL 命令行工具和各类包、证书文件都保存在 /usr/local/openssl1.1.1 目录下。
- 该版本对应的 TLS 1.3 版本是 draft 23。
安装完成后,可以使用命令行工具了解相关 TLS 1.3 信息。
比如运行下列命令,了解该版本对应的所有密码套件:
$ ./usr/local/openssl1.1.1/bin/openssl ciphers -V tls1_3 | column -t 0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD 0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD 0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
可以看出 TLS 1.3 版本支持的密码套件进一步减少(增强了安全性)。
安装 Nginx
Nginx 支持 TLS 1.3 版本,指定 OpenSSL 库即可,运行命令如下:
$ cd /root $ wget http://nginx.org/download/nginx-1.13.5.tar.gz $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz $ tar xvf pcre-8.41.tar.gz $ tar xvf nginx-1.13.5.tar.gz $ cd nginx-1.13.5 $ ./configure --prefix=/usr/local/nginx1.13.5.tls1.3 --with-http_ssl_module --with-pcre=../pcre-8.41 --with-stream --with-openssl=../openssl-1.1.1-pre1 --with-openssl-opt="enable-tls1_3 enable-ec_nistp_64_gcc_128" --with-pcre $ make $ make install
—with-openssl-opt 参数主要是为了配置 OpenSSL
Nginx 配置 TLS 1.3 版本
$ cd /usr/local/nginx1.13.5.tls1.3 $ vim conf/nginx.conf
nginx.conf 文件配置如下:
server { listen 443 ssl; server_name www.simplehttps.com; ssl_certificate /etc/letsencrypt/live/simplehttps.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/simplehttps.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-1 28-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256; location / { root html; index index.html index.htm; } }
关于如何申请证书,可以参考我原来的文章。
配置 TLS 1.3 版本很简单,ssl_protocols 增加 TLSv1.3 即可。
运行如下命令启动 Nginx:
$ ./sbin/nginx
测试 TLS 1.3
使用三种方式测试网站是否支持 TLS 1.3 版本。
1)OpenSSL 命令行
运行下列命令:
$ /usr/local/openssl1.1.1/bin/openssl s_client -connect www.simplehttps.com:443 -tls1_3 # 输出 New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 2048 bit Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_256_GCM_SHA384
可见 TLSv1.3 已经成功支持。
2)Chrome
目前主流的浏览器都支持 TLS 1.3 版本,具体见下图:
Chrome 从 62 版本默认开启 TLS 1.3 的支持,如果是 62 以下的版本,可以进行下列的配置。
(1)工具栏上打开 chrome://flags/
(2)启用 TLS 1.3
需要注意的是,如果服务器端支持的 draft 版本和浏览器支持的 draft 版本不一致,那么 HTTPS 网站将不能访问。
(3)重新启动浏览器
然后打开浏览器,对 https://www.simplehttps.com 进行测试。
3)Firefox
Firefox 从 47 版本默认开启 TLS 1.3 的支持,如果是 47 以下的版本,可以进行下列的配置。
(1)工具栏上打开 about:config
(2)修改 security.tls.version.max 为 4
(3)重新启动浏览器
然后打开浏览器,对 https://www.simplehttps.com 进行测试。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]