Nginx上部署HTTPS依賴OpenSSL庫和包含文件,即須先安裝好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/,然后在編譯配置Nginx時要指定--with-http_ssl_module和--with-http_v2_module。另外,若要在本地運(yùn)行openssl命令,要安裝OpenSSL包,本人用的OpenSSL-1.0.2g。注:本文采用Ubuntu 16.04上的操作實例。
下圖展示了數(shù)字證書(HTTPS中使用的由CA簽名的公鑰證書)的簽名和驗證原理:
TLS保障信息傳輸安全:對于每一次新的對話(連接握手階段。這里講的對話不是HTTP中涉及的應(yīng)用層對話,而是TLS對話),客戶端和服務(wù)端都會協(xié)商一個對話密鑰和對稱加密算法(了解更多可參考“加密套件”“四次握手”相關(guān)內(nèi)容)用來加減密信息,這樣就避免非對稱加減密耗時過長,運(yùn)算速度更快;而Public/Private密鑰對只用于"pre-master key"的加解密。特別地,在連接斷開后,舊對話的恢復(fù)(兩種實現(xiàn)方法:session ID和session ticket)不屬于建立新的對話,無需協(xié)商一個新的對話密鑰和對稱加密算法。