天天看點

如何全方位打造安全高效的HTTPS站點(二)

如何全方位打造安全高效的HTTPS站點(二)

     前文中我講到了從http更新到https後安全性有了基本的保障,但是如果性能受到影響,肯定會影響使用者的體驗。之前看阿裡巴巴技術保障部技術專家李振宇介紹,阿裡電商在啟用全站HTTPS後,性能不降反升,使用者通路網站和移動端更為流暢。今天我們接着來看如何提升https站點的性能。

一、不要過度安全

     在建立安全連接配接時,握手協商的過程中需要進行加密運算。在前面在介紹密鑰的時候提到過,一般來說,密鑰的位數越多,安全性越高。由于其運算複雜度提升,也更耗費的CPU資源,性能也會降低。密鑰太短會不安全,密鑰太長會影響性能。對于大多數網站,如果使用大于2048位的RSA秘鑰或256位的ECDSA密鑰則有可能影響使用者的體驗。這個道理相信大家都很好了解,用論語裡面的四個字概括是恰到好處---過猶不及。

二、使用會話恢複

     會話恢複也是一種性能優化技術,可以節省重新握手帶來的一系列開銷。并且在一段時間内可以重複使用。開啟會話恢複機制會顯著的提升你的性能。會話恢複機制有兩種,一種是基于 session ID的會話恢複,還有一種是基于 session ticket的會話恢複。基于session ID的會話恢複有一個缺點,往往session ID隻保留在一台伺服器上。是以,如果用戶端的請求發到另一台伺服器,就無法恢複對話。而session ticket這種機制就很好的解決了這個問題。有需要的朋友可以進一步學習了解。

三、資料緩存

        我們知道浏覽器會在我們請求過的站點資源進行緩存(如html頁面,圖檔資源,JS資料等)。當下一個請求到來的時候,如果是相同的URL,浏覽器會根據緩存機制來決定是直接使用緩存的副本響應,還是向源伺服器再次發起請求。是以在web端傳回資料的時候需要配置正确的消息響應頭。在web頁面也可以使用相關的标簽。對公共資料進行緩存。這樣可以充分節省網絡開銷,提高站點的性能。

四、支援HTTP / 2

      相比于 HTTP/1.1,HTTP/2的使用大幅度提高了網頁的性能。在http/1.1中,網絡延遲問題主要由于隊頭阻塞(Head-Of-Line Blocking),導緻帶寬無法被充分利用。其次,在HTTP/1.1協定中的heeader 資訊中一般會包含如( Cookie, User Agent,host等資訊),而這些資訊基本是固定的, 相同的在通信中反複傳輸對性能是有一定的影響。而且,HTTP/1.1使用的純文字形式的封包傳輸。是以在傳輸中也會增加網絡成本。這些問題在HTTP/2協定中不複存在。HTTP/2協定則采用了二進制分幀層 (Binary Framing Layer),使用二進制進行傳輸。并且使用Header壓縮,和多路複用等技術。大大的提升了傳輸速度和效率。是以,支援HTTP/2協定是提升性能的重要舉措。

五、使用OCSP Stapling

     OCSP是用來實時檢查證書吊銷狀态的協定。 OCSP Stapling将證書的狀态請求一起嵌入到TLS握手中。是以,用戶端不需要在額外的進行OCSP查詢和驗證,進而節省了時間,提高了使用者體驗。 雖然OCSP Stapling是一項很重要的優化技術,但是需要提醒的是,并非所有Web伺服器都提供可靠的OCSP stapling的支援。是以在進行配置的時候需要進行模拟驗證和測試。

六、使用硬體加速

     除了上面提到的提高性能的方式外,使用硬體加速也是一個很好的手段。熟悉密碼行業的朋友一定聽說過AES-NI指令集(或稱英特爾進階加密标準新指令,簡稱AES-NI),主要用于Inter 和AMD微處理器。該指令集的目的是改進應用程式使用進階加密标準(AES)執行加密和解密的速度 。是以,在進行web站點配置時,建議優先配置支援硬體加速的加密套件。部署的伺服器也盡可能使用支援硬體加速的CPU。

七、配置HSTS

    現在很多安全的站點都是全站https, 很多服務端通過配置302跳轉http的請求,這樣的方式會帶來兩方面的影響:

1、不安全,302 跳轉不僅暴露了使用者的通路站點,也很容易被 MITM攻擊,攻擊者可從來不會講武德。

2、降低通路速度,302 跳轉不僅需要一個 RTT,浏覽器執行跳轉也需要執行時間。

 通過開啟HSTS(HTTP Strict Transport Security)功能,可以強制用戶端(例如:浏覽器)使用HTTPS與伺服器建立連接配接,降低第一次通路請求被攔截的風險。HSTS包含在HTTP的協定頭 Strict-Transport-Security 中,在伺服器傳回資源時添加。

八、證書優化

    前我們也介紹了ECC算法的優越性,是以使用 ECDSA簽名的證書,服務端的性能會更好一些。

    以上幾點可以從各個不同的方面提高https站點的性能,供大家參考。當然,雖然題目中說的是全方位打造,但安全的保障和性能的提升遠不及此。将安全、相容和效率做到極緻才是我們的追求。看到這裡,這篇文章的基本内容都已經介紹完了。記得上學考試的時候經常會遇到附加題,為了拓展大家的知識面,讓更多的讀者,不虛此行。末尾再給大家附加介紹兩個與HTTPS相關的彩蛋。

附加一、CSP

     CSP(内容安全政策) 是一個額外的安全層,用于檢測并削弱某些特定類型的攻擊,包括跨站腳本 XSS 和資料注入攻擊等。無論是資料盜取、網站内容污染還是散發惡意軟體,這些攻擊都是主要的手段。CSP 被設計成完全向後相容。不支援CSP的浏覽器也能與實作了CSP的伺服器正常合作,反之亦然:不支援 CSP 的浏覽器隻會忽略它,如常運作,預設為網頁内容使用标準的同源政策。如果網站不提供 CSP 頭部,浏覽器也使用标準的同源政策。

附加二 、CAA

     全稱 Certificate Authority Authorization,即證書頒發機構授權, 詳見(RFC6844)。目的是減少證書意外錯誤釋出的風險。通過DNS機制建立CAA資源記錄,指定一個或多個CA機構頒有權為改域名頒發證書。從此,改變了任意CA都可以為任意域名頒發證書的曆史。

參考連結:

https://www.rfc-editor.org/rfc/rfc6844.html

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP

繼續閱讀