HTTPS基本原理與應用

HTTP存在的問題

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

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

HTTPS的解決思路

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

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

HTTPS的流程和原理

以app<- - - ->server爲例

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

https的工作流程
1、校驗服務器:客戶端向CA機構認證服務器信息
2、協商會話密鑰:客戶端和服務器協商會話加密密鑰
3、加密通訊:客戶端和服務器使用會話密鑰加密數據報文

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


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

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

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

證書生成

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

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

3、使用證書私鑰生成證書籤名:
>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,
這很重要,必須輸入證書綁定的域名

4、使用證書私鑰和簽名生成證書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端口轉發
1、ssl配置:端口(默認443)、ssl協議及版本、ssl加密方式、證書路徑
2、nginx轉發配置:與http轉發配置一致

https效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章