使用 nginx 和 TLS 1.3 獲得完美的 SSL 實驗室分數?
我創建了一個僅使用 TLS v1.2 在 Qualsys SSL Labs 上獲得滿分的 nginx 配置,我想嘗試使用 TLS v1.2 和 v1.3 獲得滿分。
考慮這個 nginx.conf 版本的片段,它是 A+ 和 100% 分數的一部分:
ssl_protocols TLSv1.2; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
它抱怨了幾個密碼套件,但它仍然給出了完美的分數:
現在,如果我將 TLS v1.3 作為唯一的配置更改添加到組合中,則分數會發生變化。
ssl_protocols TLSv1.2 TLSv1.3;
我認為那些弱 CBC 密碼很生氣:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp384r1 (eq. 7680 bits RSA) FS WEAK 256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp384r1 (eq. 7680 bits RSA) FS WEAK 256 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x6b) DH 4096 bits FS WEAK 256 TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39) DH 4096 bits FS WEAK
沒有一個很好的方法可以完美地刪除 CBC 模式密碼,但排除 SHA1、SHA256 和 SHA384 可能會起作用。配置行變為:
ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL:!SHA1:!SHA256:!SHA384;
密碼套件強度仍為 90%。
這將我們帶到……舊設備/應用程序成功握手所需的相同密碼套件被列為“弱”並且僅在啟用 TLS 1.2 時通過。不知何故,啟用 TLS 1.3 會使那些在開始失敗之前通過的弱密碼。
似乎選擇是:要麼只啟用 TLS 1.2以獲得完美分數,要麼也啟用 TLS 1.3 但獲得必要的密碼套件?有點像小林丸。
啟用 nginx 和 TLS 1.2 和 1.3 是否可以獲得完美的 100% 分數?
關於您的實際問題,即關於Qualys SSL Labs測試工具本身的問題,我們將不得不深入研究他們的評級系統是如何工作的。
幸運的是 Qualys 發布了他們的SSL 伺服器評級指南,其中描述了他們對 SSL/TLS 配置進行評級的方法。
由於您的問題是關於為什麼您在密碼強度類別中的分數略低,而您提出的配置之一高於另一個,所以讓我們特別關注該類別:
密碼強度
為了破壞通信會話,攻擊者可以嘗試破壞用於大部分通信的對稱密碼。更強的密碼允許更強的加密,從而增加破解它所需的努力。因為伺服器可以支持不同強度的密碼,所以我們得出了一個懲罰使用弱密碼的評分系統。為了計算這個類別的分數,我們遵循這個算法:
- 從最強密碼的分數開始。
- 添加最弱密碼的分數。
- 將總數除以 2。
表 5. 密碼強度等級指南
Cipher strength Score 0 bits (no encryption) 0% < 128 bits (e.g., 40,56) 20% < 256 bits (e.g., 128, 168) 80% >= 256 bits (e.g., 256) 100%
回顧問題中包含的更詳細的結果,我們可以看到在 TLS1.2-only 配置中,您僅使用 256 位密碼(即使某些密碼套件不受歡迎),而在 TLS1.2 中。 2+TLS1.3 配置您使用的是 128 位和 256 位密碼的混合。
根據他們的評級系統,這解釋了為什麼您在“密碼強度”中得分降低。
現在,這幾乎突出表明,雖然這個工具是一個非常有用的資源(特別是指出實際的錯誤配置),但過分關注確切的評分而不是查看整個報告並不是一個好主意。
至於什麼才是真正合理的 TLS 設置,除非您對自己的需求有一個深刻的了解,否則我建議您查看由 Mozilla 運營安全和企業資訊安全團隊維護的伺服器端 TLS指南。
特別是他們的“中級”配置在廣泛的兼容性和安全性之間取得了很好的平衡,並且有一個用於流行的 TLS 伺服器的配置生成器,可以方便地將建議的設置轉換為實際的伺服器配置。