## 加密算法
1. 對稱加密: DES,AES,3DES;
2. 非對稱加密 : RSA,DSA,ECC;
# 對稱加密算法
加密方和解密方使用同一把秘鑰,但是秘鑰有泄露的風險;

## 優勢
1. 解密效率高;
## 劣勢
1. 秘鑰無法實現安全傳輸;
2. 秘鑰的數目難以管理;
3. 無法提供信息完整性校驗;
# 非對稱加密算法

## 優勢
1. 服務器僅維持一個私鑰即可;
## 劣勢
1. 公鑰是公開的;
2. 非對稱加密算法加解密過程中會耗費一定時間;
3. 公鑰并不包含服務器信息,存在中間人攻擊的可能性;
# HTTPS加密原理
https混合使用對稱加密和非對稱加密;
1. 連接建立階段使用非對稱加密算法;--->服務器給客戶端公鑰,客戶端拿著公鑰加密偽隨機生成的**會話秘鑰**,并傳遞給服務端,服務端解密,拿到**會話秘鑰**;
2. 內容傳輸階段使用對稱加密算法;--->使用**會話秘鑰**進行內容的傳輸;
## HTTPS五個角色
1. 服務器;
2. 客戶端;
3. 公鑰;
4. 私鑰;
5. 會話秘鑰;

1. Client發起一個HTTPS(https:/demo.linianhui.dev)的請求,根據RFC2818的規定,Client知道需要連接Server的443(默認)端口。
2. Server把事先配置好的公鑰證書(public key certificate)返回給客戶端。
3. Client驗證公鑰證書:比如是否在有效期內,證書的用途是不是匹配Client請求的站點,是不是在CRL吊銷列表里面,它的上一級證書是否有效,這是一個遞歸的過程,直到驗證到根證書(操作系統內置的Root證書或者Client內置的Root證書)。如果驗證通過則繼續,不通過則顯示警告信息。
Client使用偽隨機數生成器生成加密所使用的會話密鑰,然后用證書的公鑰加密這個會話密鑰,發給Server。
4. Server使用自己的私鑰(private key)解密這個消息,得到會話密鑰。至此,Client和Server雙方都持有了相同的會話密鑰。
Server使用會話密鑰加密“明文內容A”,發送給Client。
5. Client使用會話密鑰解密響應的密文,得到“明文內容A”。
Client再次發起HTTPS的請求,使用會話密鑰加密請求的“明文內容B”,然后Server使用會話密鑰解密密文,得到“明文內容B”。
## 總結
簡單總結下,HTTPS是使用了證書的一個混合密碼系統,其中證書的作用在于傳遞會話密鑰,以及驗證網站的真實性;而HTTPS真正的加密操作是由對稱密碼這個工具負責的(有興趣的可以找找每個步驟中都用到了密碼工具箱中的那些工具)。
## 自己總結
1. 非對稱加密會生成一對公鑰和私鑰,必須要使用特定的私鑰才能解開同一對的公鑰;
2. 服務器本身有一個公鑰和一個私鑰;
3. 當客戶端去訪問的時候會給這個客戶端一個公鑰;
4. 客戶端拿著這個公鑰去加密隨機數生成器生成加密所使用的**會話密鑰**,并發送給服務端;
5. 服務端使用私鑰去解密這個加密后的秘鑰,這樣就得到了**會話秘鑰**;
6. 雙方使用相同的**會話秘鑰**進行連接;
7. HTTPS前半段是非對稱加密,而后半段是對稱加密;
## 問題
為什么黑客無法解密呢? 因為黑客沒有私鑰,所以黑客不能解密加密后的**會話秘鑰**拿不到**會話秘鑰**,既然拿不到**會話秘鑰**,就無法解密加密后的內容.這樣就安全了;
- NginX簡述
- 什么是中間件
- NginX概述
- 選擇NginX的理由
- NginX環境安裝
- 四項確認
- NginX安裝
- 安裝
- 安裝目錄詳解
- 編譯參數詳解
- Nginx主目錄
- 基于NginX的中間件架構
- Nginx日志類型
- Nginx變量
- 常見NginX中間架構
- 靜態資源web服務
- 概述
- 靜態資源服務場景-CDN
- 瀏覽器緩存原理
- 跨站訪問
- 防盜鏈
- 代理服務
- 概述
- 配置語法
- 其他配置語法
- 負載均衡調度器SLB
- 概述
- 配置
- 動態緩存
- ====分割線====
- Nginx初體驗
- nginx簡介
- 請求全流程
- nginx核心優勢
- 安裝第一個rpm包nginx
- Nginx進程結構與熱部署
- 進程結構
- 信號量管理nginx
- 配置文件重載原理真相
- nginx熱部署
- nginx模塊化管理機制
- nginx編譯安裝的配置參數
- nginx配置文件結構
- 虛擬主機的分類
- Nginx核心指令基礎應用
- main段核心參數用法
- events段核心參數用法
- HTTP段核心參數用法
- server_name
- server_name指令用法優先級
- root和alias的區別
- location的基礎用法
- location指令中匹配規則的優先級
- 深入理解location中URL結尾的反斜線
- stub_status模塊用法
- Nginx應用進階
- connection和request
- 對connection做限制的limit_conn模塊
- 對request處理速率做限制的limit_req模塊
- 限制特定IP或網段訪問的access模塊
- 限制特定用戶訪問的auth_basic模塊
- 基于HTTP響應狀態碼做權限控制的auth_request模塊
- rewrite模塊
- return指令
- rewrite指令
- return和rewrite指令執行順序
- if指令
- autoindex模塊用法
- Nginx的變量
- 變量分類
- TCP連接相關變量
- 發送HTTP請求變量
- 處理HTTP請求變量
- 反向代理
- 基礎原理
- 動靜分離
- nginx作為反向代理支持的協議
- 用于定義上游服務的upstream模塊
- upstream模塊指令用法詳解
- 配置一個可用的上游應用服務器
- proxy_pass常見誤區
- 代理場景下nginx接受用戶請求包體的處理方式
- 代理場景下Nginx更改發往上游的用戶請求
- 代理場景下Nginx與上游服務建立連接細節
- 基于fastcgi的反向代理
- 負載均衡
- 負載均衡基礎
- 實現nginx對上游服務負載均衡
- 負載均衡hash算法
- 負載均衡ip_hash算法
- 負載均衡最少連接數算法
- 針對上游服務器返回異常時的容錯機制
- Nginx緩存
- 緩存基礎
- 緩存相關指令
- 緩存用法配置示例
- 配置nginx不緩存上游服務特定內容
- 緩存失效降低上游壓力機制1-合并源請求
- 緩存失效降低上游壓力機制2-啟用陳舊緩存
- 第三方清除模塊ngx_cache_purge介紹
- ngx_cache_purge用法配置示例
- Nginx和HTTPS
- https原理基礎
- https如何解決信息被竊聽的問題
- https如何解決報文被篡改以及身份偽裝問題
- 配置私有CA服務器
- 組織機構向CA申請證書及CA簽發證書
- 深入Nginx架構
- Nginx性能優化