夜空中最靚的二狗子是如何讓 HTTPS 快上加快的?

二狗子是某不知名網站的站長,他熱衷於經過博客分享平常的一些工做、生活、技術等,立志要成爲夜空中最靚的仔。html

可是前段時間有幾個用戶反饋,網站老是莫名會跳轉到一個 xx 網站,除此以外訪問速度也有點慢。做爲夜空中最靚的仔,怎麼可能會讓劫持這種事情困擾用戶,因而全站快速啓用了 HTTPS。網站是安全了,可是有什麼辦法能夠加快訪問速度,二狗子再一次陷入了沉思。算法

HSTS

一個夜深人靜的夜晚,二狗子開始深刻研究 HTTPS 。他從維基百科查找了 HTTPS 的傳輸過程,只有熟悉了整個過程才能更好了解如何優化 HTTPS。瀏覽器

image

二狗子想着 HTTPS 雖然已經啓用,可是沒法確認用戶是直接訪問 http:// 仍是 https:// ,按照廣泛的用戶習慣都是直接輸入站點域名,再由瀏覽器直接補充協議類型。可是這就存在一個問題,若是在網站設置當用戶訪問域名的時候強制 https 進行 301 或者 302 跳轉,可是這個過程當中使用到 HTTP 所以容易發生劫持,受到第三方的攻擊。緩存

image

有什麼更好的辦法來避免這種狀況呢?話說有矛就有盾,二狗子深刻研究發現 HSTS 是能夠避免這種狀況。安全

HSTS 是國際互聯網工程組織 IETF 正在推行一種新的 Web 安全協議,網站採用 HSTS 後,用戶訪問時無需手動在地址欄中輸入 https://,瀏覽器會自動採用 HTTPS 訪問網站地址,從而保證用戶始終訪問到網站的加密連接,保護數據傳輸安全。服務器

HSTS 主要是經過服務器發送響應頭的方式控制瀏覽器操做;網絡

  1. 首先在服務器響應頭中添加:
    Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
  2. 設置 max-age 參數,最長建議設置 6 個月;
  3. 當用戶下次使用 http 訪問,客戶端就會進行內部 307 跳轉;

開啓 HSTS 能夠有效防範攻擊,同時省去 301/302 跳轉時間,大大提高網站安全係數和用戶體驗。併發

HTTP/2

開啓 HSTS 後,二狗子更加興奮,決定不睡覺繼續深刻研究。性能

image

二狗子在 IT 界混了那麼久,最近頻頻據說 HTTP/2,但並不瞭解 HTTP/2 有哪些「威武」的地方,因而又開啓了研究之旅。學習

HTTP/2 是 HTTP 協議自 1999 年 HTTP 1.1 發佈後的首個更新,主要基於 SPDY 協議。它由互聯網工程任務組(IETF)的 Hypertext Transfer Protocol Bis(httpbis)工做小組進行開發。該組織於 2014 年 12 月將 HTTP/2 標準提議遞交至 IESG 進行討論,於 2015 年 2 月 17 日被批准。HTTP/2 標準於 2015 年 5 月以 RFC 7540 正式發表。

HTTP/2 相比較 HTTP 1.1 有如下幾個改變:

  1. 採用二進制格式傳輸數據,而非 HTTP 1.x 的文本格式,二進制協議解析起來更高效。
  2. 採用多路複用,代替原來的序列和阻塞機制。全部就是請求的都是經過一個 TCP 鏈接併發完成。
  3. 服務器推送,服務端能夠在發送頁面 HTML 時主動推送其它資源,而不用等到瀏覽器解析到相應位置,發起請求再響應。例如服務端能夠主動把 JS 和 CSS 文件推送給客戶端,而不須要客戶端解析 HTML 再發送這些請求。服務端能夠主動推送,客戶端也有權利選擇接收與否。若是服務端推送的資源已經被瀏覽器緩存過,瀏覽器能夠經過發送 RST_STREAM 幀來拒收。主動推送也遵照同源策略,服務器不會隨便推送第三方資源給客戶端。
  4. 頭部壓縮,HTTP/2 對消息頭採用 HPACK(專爲 HTTP/2 頭部設計的壓縮格式)進行壓縮傳輸,可以節省消息頭佔用的網絡的流量。

HTTP/2 到底有多快,有一個 HTTP 1.1 VS HTTP/2 的演示 demo,二狗子看到以後興奮的睡不着覺。

image

按照這樣優化下去,二狗子的網站訪問速度立刻就要起飛了。

TLS 1.3

二狗子忽然想到,SSL 版本已經發布到 TLS 1.3,它是 TLS 協議中最新、最快和最安全的版本,相比舊版的 TLS 協議增長了多項新功能。經過簡化 SSL 握手流程,提升了鏈接速度,減小了延遲,並經過移除有安全隱患的加密算法,提升了用戶訪問的性能、效率和安全性等等。

爲了更好的瞭解 TLS 1.3 是如何工做的,二狗子又開始了新的學習之旅。

image

從上圖能夠看出,使用 TLS 1.2 須要兩次往返( 2-RTT )才能完成握手,而後才能發送請求。

image

TLS 1.3 的握手再也不支持靜態的 RSA 密鑰交換,這意味着必須使用帶有前向安全的 Diffie-Hellman 進行全面握手。從上圖能夠看出,使用 TLS 1.3 協議只須要一次往返( 1-RTT )就能夠完成握手。

相比 TLS 1.2,TLS 1.3 的握手時間減半。這意味着訪問一個移動端網站,使用 TLS 1.3 協議,可能會減小將近 100ms 的時間。

「不是 HTTPS 讓網站變慢,而是網站優化的不夠」,二狗子發出深深的感慨。通過一晚上的努力,終於給博客開啓了 HSTS、HTTP/2 和 TLS 1.3,二狗子感受本身成爲了博客界最靚的仔。d可是二狗子不知道的是,又拍雲提供一站式 SSL 證書申請服務,HSTS、HTTP/2.0、TLS 1.3 等功能一鍵便可開啓,分分鐘就能讓HTTPS快上加快。

推薦閱讀:

當 「HTTP」 先生趕上「S」小姐

TLS 1.3 VS TLS 1.2,讓你明白 TLS 1.3 的強大

相關文章
相關標籤/搜索