1) TLS 握手
握手的目的就是協商出一個對稱加密使用的key,用來加密後面的業務數據。
1) client 產生一個random 值
2) server 產生一個random 值, server 將簽名的證書 和 random 值 以及非對稱加密使用的public key 發送給client
3) client 驗證證書,再產生一個random 值,並且用public key 加密給server
4) client 和 server 擁有相同的隨機值,使用相同的算法就可以生成一樣的對稱加密的密碼
2) 證書認證
首先要知道證書是如何生成的
1) server 提取自身的一些信息(比如domain name 和公鑰) 給CA 機構, CA機構 對這些信息 做簽名,並對簽名使用
非對稱加密的private key 加密。
2) client 用CA 對 CA簽名的server 證書校驗。client 也對這些明文信息做簽名運算得到一個簽名值, 然後用CA的public key
解密 又得到一個簽名值, 這兩個簽名值一樣, 說明 server就是真實的server。
3) 爲什麼說 所以自簽名證書不安全的
對於自簽名證書, 攻擊者不會去攻擊server 或者client, 他會去攻擊簽發 證書的那臺server, 只要拿到這臺機器的私鑰
那麼攻擊者就可以實現中間人劫持了。
S' 既然有了私鑰, 那麼他可以簽發一個證書,那麼client 與S‘ 就可以建立TLS 通信,
同樣S' 也可以和S TLS 通信
A -------------------------------- S
A --------------S'----------------- S