HTTPS基本原理與應用

HTTP存在的問題nginx

一、沒法保證訪問到受信網站
當咱們要訪問一個網站時,如何才能保證這個網站就是咱們要的?假設場景以下:
算法

二、沒法保證數據私密性和完整性
HTTP協議的數據在傳輸過程當中使用明文傳輸,很容易被抓取和篡改,可以使用tcpdump工具進行驗證。
服務器

HTTPS的解決思路app

一、網站受信鑑權
引入第三方授信服務商,由授信服務商提供網站證書籤名,保證網站可信。
tcp

二、數據私密性和完整性
HTTPS協議利用網站證書籤名來生成相應的公鑰和密鑰,對數據報文進行加解密處理。
ide

HTTPS的流程和原理工具

以app<- - - ->server爲例網站

前提
向第三方授信服務商購買證書,或在服務器生成本地證書,並將證書放到網站服務器的指定路徑下,同時將證書發給客戶端app保存在本地。
加密

https的工做流程
一、校驗服務器:客戶端向CA機構認證服務器信息
二、協商會話密鑰:客戶端和服務器協商會話加密密鑰
三、加密通信:客戶端和服務器使用會話密鑰加密數據報文
spa

注:因爲非對稱加密的算法複雜,佔用較多CPU資源,實際使用時會放棄第七、8兩步。


HTTPS的配置
以本地自簽名證書爲例

證書生成
因爲沒有向第三方申請證書,咱們使用openssl生成本地證書來演示https的配置。

nginx配置https端口轉發
一、nginx須要安裝支持ssl的模塊。
二、在nginx配置文件中新增https端口轉發配置

證書生成

一、製做證書私鑰:
>openssl genrsa -des3 -out test_yunqixin_service.crt 1024

二、使用證書私鑰製做解密後的證書私鑰:
>openssl rsa -in test_yunqixin_service.crt  -out test_yunqixin_service_nopass.key

三、使用證書私鑰生成證書籤名:
>openssl req -new -key test_yunqixin_service.crt -out test_yunqixin_service.csr
提示輸入證書信息:Common Name (eg, your name or your server's hostname) []:
此處咱們輸入網站域名:test.yunqixin.site,
這很重要,必須輸入證書綁定的域名

四、使用證書私鑰和簽名生成證書crt文件:
>openssl x509 -req -days 10000 -in test_yunqixin_service.csr -signkey test_yunqixin_service_nopass.key -out test_yunqixin_service.crt

證書生成
通過上面四個步驟,獲得.crt文件和.key文件,內容以下。
這兩個文件也是須要配置到nginx的配置文件裏面。



nginx配置https端口轉發
一、ssl配置:端口(默認443)、ssl協議及版本、ssl加密方式、證書路徑
二、nginx轉發配置:與http轉發配置一致

https效果

相關文章
相關標籤/搜索