首先了解一下http協(xié)議的變遷。
http1.0默認短連接,1.1默認長連接并且可以管道傳輸,但是存在隊頭阻塞問題;
https就是在tcp和http之間加了SSL/TLS層。
http2也是安全的,改進是hpack二進制和編碼壓縮減小體積,stream沒有隊頭阻塞了(TCP層還有),以及服務器主動推送功能;
http3把TCP變成udp了, 并且在上層用QUIC協(xié)議保證可靠傳輸,速度更快了,并且QUIC,TLS在一層可以合并,所以連接只需要1RTT就夠了,基于連接id還可以實現(xiàn)連接遷移。
SSL/TLS
tls是升級版的ssl,ssl到3.0之后就改名tls1.0了。ssl分成兩層:ssl記錄協(xié)議和ssl握手協(xié)議。記錄協(xié)議主要負責對tcp的數(shù)據(jù)進行封裝壓縮加密,相當于表示層了。握手協(xié)議就是常說的https的四次握手過程(建立連接,協(xié)商秘鑰,協(xié)商加密算法),不過四次握手還涉及到CA證書的驗證。ssl叫習慣了
tls的改進點在于:HMAC算法保證更安全的MAC功能;更多的告警代碼;支持的加密算法不同。
到現(xiàn)在看來,https包含了ssl/tls,然后ssl協(xié)議里面又會涉及到CA證書的驗證過程保證雙方的可靠性。以及加密和數(shù)字摘要保證消息不被監(jiān)聽和篡改。
(關于加密算法
對稱加密算法:加密解密用一種,DES,DES3等等,但是因為有可能對稱秘鑰傳輸過程會被竊取所以不安全;
非對稱加密:公鑰加密,私鑰解密。如RSA,由于私鑰不會傳輸,所以信息無法被竊取。但是速度慢,所以一般用來對秘鑰進行加密的。
四次握手大致過程: hello打招呼,把密碼列表版本號以及隨機數(shù)給服務端,服務端也會生成隨機數(shù)確定密碼列表給額客戶端;中間有CA證書驗證過程,保證服務端合法的;后兩次就是客戶端利用服務端的公鑰加密一個隨機數(shù),利用這三個隨機數(shù)生成對稱秘鑰,然后嘗試加密消息并消息摘要,看看行不行。
)
CA:
是一個頒發(fā)數(shù)字證書的權威機構。比如GlobalSign、DigiCert 和 GoDaddy。一般瀏覽器使用的CA證書都是存在于瀏覽器和操作系統(tǒng)的,所以可以保證CA證書的安全。
CA作用: 確認服務端可靠;并且里面的公鑰可以把三個隨機數(shù)生成對稱秘鑰然后和服務端私鑰結合實現(xiàn)數(shù)據(jù)加密作用。
C證書鏈式結構,每個CA有幾個子 CA,信任鏈,所以編程時如果瀏覽器沒有再到操作系統(tǒng)找根證書鏈,不然耗時。
CA證書有什么:
有不同的格式有的是可編輯的PEM,二進制的DEM. 其中X.509就是可編輯中的一種。
具體的CA證書采用的是X509格式的。主要包含以下三個文件:
key,csr,crt。
key是服務器的私鑰,不傳輸,用于加密解密的。
csr是簽名請求文件用于給CA讓它簽名,簽名才有效;
crt:簽名后或者自簽名(rusttls)的證書:包括服務器公鑰,服務器的id信息,以及簽名人的信息。
具體rusttls怎么實現(xiàn)簽名的?
1、certify的庫,主要就是利用內(nèi)部算法生成一個CA機構,然后把客戶端服務端的csr給CA簽名。得到
crt文件,存到一個目錄中。
2.根據(jù)前面得到的 證書,生成clientconfig,serverconfig;
3、利用內(nèi)2部的connect函數(shù),就可以把stream轉(zhuǎn)換成tlsstream。(實際上就是from into trait)文章來源:http://www.zghlxwxcb.cn/news/detail-606941.html
在開發(fā)測試環(huán)境中,常見的ssl證書生成的開源工具有openssl,rusttls等。我用的后者,相比openssl,編譯連接簡單,速度快。文章來源地址http://www.zghlxwxcb.cn/news/detail-606941.html
到了這里,關于關于網(wǎng)絡通信安全協(xié)議的一些知識(ssl,tls,CA,https)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!