1.HTTP中的 S 是什么
HTTP 協(xié)議中的內(nèi)容都是明文傳輸返十,HTTPS 的目的是將這些內(nèi)容加密荣回,確保信息傳輸安全察迟。最后一個(gè)字母 S 指的是 SSL/TLS 協(xié)議,它位于 HTTP 協(xié)議與 TCP/IP 協(xié)議中間吱肌。
2.SSL/TLS協(xié)議的簡單介紹
1)HTTP明文傳輸帶來的問題
- 竊聽風(fēng)險(xiǎn)
- 篡改風(fēng)險(xiǎn)
- 冒充風(fēng)險(xiǎn)
2)SSL/TLS協(xié)議的目的
- 所有信息都是加密傳播痘拆,無法被竊聽
- 具有校驗(yàn)機(jī)制,被篡改后氮墨,通信雙方可以立刻發(fā)現(xiàn)
- 配備身份證書纺蛆,防止被冒充
3.SSL/TLS協(xié)議的運(yùn)行機(jī)制
基本思路:采用公鑰加密法
問題及解決:
1)如何保證公鑰不被篡改?
將公鑰放在數(shù)字證書中规揪。只要證書是可信的桥氏,公鑰就是可信的。
2)公鑰加密計(jì)算量太大猛铅,如何減少耗時(shí)字支?
每一次對(duì)話(session),客戶端和服務(wù)器端都生成一個(gè)"對(duì)話密鑰"(session key)奸忽,用它來加密信息堕伪。由于"對(duì)話密鑰"是對(duì)稱加密,所以運(yùn)算速度非忱醪耍快欠雌,而服務(wù)器公鑰只用于加密"對(duì)話密鑰"本身,這樣就減少了加密運(yùn)算的消耗時(shí)間疙筹。
運(yùn)行機(jī)制:一個(gè)完整的加密通信過程
1)客戶端向服務(wù)端發(fā)送請(qǐng)求
2)服務(wù)端向客戶端發(fā)送自己的數(shù)字證書富俄,證書包含公鑰
3)客戶端校驗(yàn)證書是否正確。如果正確(并不代表對(duì)方就是服務(wù)器)而咆,發(fā)送一個(gè)隨機(jī)數(shù)給服務(wù)端用私鑰加密霍比,自己用公鑰去解密這個(gè)字符串,看是否能匹配上暴备。如果匹配上悠瞬,則說明對(duì)方確實(shí)是服務(wù)器
4)客戶端生成一個(gè)對(duì)稱加密算法,之后的內(nèi)容會(huì)用這個(gè)對(duì)稱加密進(jìn)行加解密涯捻「笪#客戶端用公鑰加密這個(gè)對(duì)稱加密算法和密鑰,發(fā)送給服務(wù)端汰瘫。之后雙方的通信就按這個(gè)方式展開了。
參考資料:
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html