現在位置: 首頁 > Nginx > 正文

Nginx 編譯最新的 SSL(Chacha20-Poly1305),解決 Google Chomre 淘汰 SPDY 改用 HTTP/2 的問題

在今年六月,Google Chrome 51 淘汰了 SPDY/NPN 的支援,並且改採用 HTTP/2 與 ALPN

 

SPDY 為一個 Open Source 的專案,主要是用來改善在網頁傳輸的延遲增加了 55 % 的下載速度,但隨著 HTTP 協定的演進 Google Chrome 開始支援 HTTP/2 並且放棄 SPDY/NPN。

 

也就是說,即使你使用了 SPDY 也不再受到 Chrome 的支援,也不會使用 HTTP/2 的協定,但是 OpenSSL 在 1.0.2 later 才開始支援 ALPN,最瞎的是目前幾乎所有發行版本內建的 OpenSSL 全部都不支援。

alpn_support

 

目前有支援 HTTP/2 ALPN 的 SSL 有以下

  • OpenSSL:patch from Cloudflare
  • LibreSSL :maintains from OpenBSD
  • BoringSSL:maintains from Google

 

這幾種 SSL 都支援最新的 Chacha20-Poly1305,其中裡面還有一個名為「等價加密算法組」可以讓客戶端自行選擇最安全的加密形式;

 

在中國有一位JerryQu的一篇文章描述得非常詳細 使用 BoringSSL 优化 HTTPS 加密算法选择,正常狀況下是由伺服器選擇客戶端的加密形式,但 「等價加密算法組」則是可以讓瀏覽器有彈性的調整想要走的安全加密形式

 

上述這三種 SSL 各有優缺點

  • LibreSSL 針對 OpenSSL 進行全面重構,更為輕量,但目前(2.4.2)尚未支援「等價加密組」。
  • OpenSSL 相較於其他為老牌的 SSL,但因為長期累月的維護越來越肥大,相對問題也多,由於使用的人數眾多,如有重大 Bug 也較容易受重視,支援「等價加密組」。
  • BoringSSL 不支援 OCSP Stapling,由於 Google 工程師說這是有漏洞的!相對的 Chrome 也不支援 OCSP,支援「等價加密組」。

 

 

NginxAuto Patch SSL

針對如何編譯 ChaCha20-Poly1305 小弟已經有寫在 Github 分享出來使用

Github: nginxauto

 

在這個專案裡面提供了 OpenSSL(Cloudflare) / LibreSSL / BoringSSL 三種 SSL 自行選用,全面使用源始碼重新編譯,並且加入許多安全參數

 

 

 

「等價加密算法組」的設定

BoringSSL:

 

OpenSSL/LibreSSL:

 

在 Nginx 設定,以 BoringSSL 為例

 

 

 

參考資料:

Supporting HTTP/2 for Google Chrome Users

使用 BoringSSL 优化 HTTPS 加密算法选择

 

 

文章連結: https://shazi.info/nginx-%e7%b7%a8%e8%ad%af%e6%9c%80%e6%96%b0%e7%9a%84-sslchacha20-poly1305%ef%bc%8c%e8%a7%a3%e6%b1%ba-google-chomre-%e6%b7%98%e6%b1%b0-spdy-%e6%94%b9%e7%94%a8-http2-%e7%9a%84%e5%95%8f%e9%a1%8c/ | Mr. 沙先生

該文章由 shazi7804 於2016年11月10日發表在 Nginx 分類下, 你可以發表回文,並在保留原文地址及作者的情况下引用到你的網站或部落格。
原文轉載請註明: Nginx 編譯最新的 SSL(Chacha20-Poly1305),解決 Google Chomre 淘汰 SPDY 改用 HTTP/2 的問題 | Mr. 沙先生
標籤: , , , , , ,

Nginx 編譯最新的 SSL(Chacha20-Poly1305),解決 Google Chomre 淘汰 SPDY 改用 HTTP/2 的問題:給Mr.沙先生一點建議

發表回文