首先附上證書(shū)轉(zhuǎn)換的方法,如下:
在服務(wù)器人員,給你發(fā)送的crt證書(shū)后,進(jìn)到證書(shū)路徑,執(zhí)行下面語(yǔ)句
$openssl x509 -in 你的證書(shū).crt -out 你的證書(shū).cer -outform der這樣你就可以得到cer類型的證書(shū)了,并雙擊導(dǎo)入電腦證書(shū)放入工程 :
2.1 可以直接把轉(zhuǎn)換好的cer文件拖動(dòng)到工程中
2.2 可以在鑰匙串內(nèi),找到你導(dǎo)入的證書(shū),單擊右鍵,導(dǎo)出項(xiàng)目,就可以導(dǎo)出.cer文件的證書(shū)了
以上資料參考:https://blog.csdn.net/st646889325/article/details/53856833
以下使用通俗一點(diǎn)的名稱作假設(shè):
公鑰 可以理解為 保險(xiǎn)柜,用于加密數(shù)據(jù)
私鑰 可以理解為 解鎖密碼,用于解密獲取數(shù)據(jù)
只有對(duì)應(yīng)的 私鑰 才能打開(kāi) 公鑰 ,服務(wù)端的 公鑰+私鑰 是成一對(duì)存在。
客戶端生成的隨機(jī)數(shù) ,這個(gè)東西是具有加密、解密 功能。
完成以上 .crt 轉(zhuǎn)換 .cer 并導(dǎo)入到工程之后,工程(客戶端)上已經(jīng)有 服務(wù)端的保險(xiǎn)柜 了,因?yàn)樗菑倪@個(gè) .cer 證書(shū)里取出來(lái)的。
非對(duì)稱加密
1.當(dāng) 客戶端 發(fā)起請(qǐng)求時(shí),會(huì)生成一個(gè)隨機(jī)數(shù),并備份在本地存有一份;然后利用 服務(wù)端的保險(xiǎn)柜 鎖著這個(gè)隨機(jī)數(shù) 并發(fā)送過(guò)去 服務(wù)端
2.服務(wù)端 收到之后,使用只有自己知道的 解鎖密碼 去打開(kāi)并獲得 客戶端生成的隨機(jī)數(shù); 此時(shí)雙方都持有了這個(gè) 隨機(jī)數(shù)
此傳輸過(guò)程就是 非對(duì)稱加密,這種方式在傳輸工程中如果遭到了第三方hook也不會(huì)有影響,因?yàn)?strong>保險(xiǎn)柜必須解鎖才能知道里面裝得是什么東西,然而這個(gè)解鎖密碼 就只有 服務(wù)端 知道。
對(duì)稱加密
經(jīng)過(guò)上述的非對(duì)稱加密之后, 客戶端 與 服務(wù)端 都持有了相同的 隨機(jī)數(shù)。
當(dāng)建立連接傳輸數(shù)據(jù)的時(shí)候,會(huì)使用這個(gè) 隨機(jī)數(shù) 對(duì)數(shù)據(jù)進(jìn)行加密,接收數(shù)據(jù)的一方再用 隨機(jī)數(shù) 進(jìn)行解密獲得。

以下附上 TCP三次握手 的相關(guān)資料:
https://baijiahao.baidu.com/s?id=1614404084382122793&wfr=spider&for=pc
https://www.zhihu.com/question/24853633?sort=created
以上內(nèi)容純粹個(gè)人見(jiàn)解,僅用于分享交流,如有描述不當(dāng)之處,歡迎指出。