前言
最近在看一些 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 -t0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
可以看出 TLS 1.3 版本支持的密碼套件進一步減少(增強了安全性)。
新聞熱點
疑難解答