一、Http
HyperText Transfer Protocol,超文本傳輸協(xié)議,是互聯(lián)網(wǎng)上使用最廣泛的一種協(xié)議,所有WWW文件必須遵循的標(biāo)準(zhǔn)。HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全。
使用TCP端口為:80
二、Https
Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本傳輸協(xié)議,網(wǎng)景公式設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對(duì)Http協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,保證會(huì)話過程中的安全性。
使用TCP端口默認(rèn)為443
三、SSL協(xié)議加密方式
SSL協(xié)議即用到了對(duì)稱加密也用到了非對(duì)稱加密(公鑰加密),在建立傳輸鏈路時(shí),SSL首先對(duì)對(duì)稱加密的密鑰使用公鑰進(jìn)行非對(duì)稱加密,鏈路建立好之后,SSL對(duì)傳輸內(nèi)容使用對(duì)稱加密。
1、對(duì)稱加密
速度高,可加密內(nèi)容較大,用來加密會(huì)話過程中的消息
2、公鑰加密
加密速度較慢,但能提供更好的身份認(rèn)證技術(shù),用來加密對(duì)稱加密的密鑰
四、單向認(rèn)證
Https在建立Socket連接之前,需要進(jìn)行握手,具體過程如下:

1、客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息。
2、服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息,同時(shí)也返回服務(wù)器端的證書,即公鑰證書
3、客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:
證書是否過期
發(fā)型服務(wù)器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數(shù)字簽名
服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配
驗(yàn)證通過后,將繼續(xù)進(jìn)行通信,否則,終止通信
4、客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案,供服務(wù)器端進(jìn)行選擇
5、服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式。
6、服務(wù)器將選擇好的加密方案通過明文方式返回給客戶端
7、客戶端接收到服務(wù)端返回的加密方式后,使用該加密方式生成產(chǎn)生隨機(jī)碼,用作通信過程中對(duì)稱加密的
密鑰,使用服務(wù)端返回的公鑰進(jìn)行加密,將加密后的隨機(jī)碼發(fā)送至服務(wù)器
8、服務(wù)器收到客戶端返回的加密信息后,使用自己的私鑰進(jìn)行解密,獲取對(duì)稱加密密鑰。
在接下來的會(huì)話中,服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密,保證通信過程中信息的安全。
五、雙向認(rèn)證
雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外,增加了服務(wù)端對(duì)客戶端的認(rèn)證,具體過程如下:

1、客戶端向服務(wù)端發(fā)送SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息。
2、服務(wù)端給客戶端返回SSL協(xié)議版本號(hào)、加密算法種類、隨機(jī)數(shù)等信息,同時(shí)也返回服務(wù)器端的證書,即公鑰證書
3、客戶端使用服務(wù)端返回的信息驗(yàn)證服務(wù)器的合法性,包括:
證書是否過期
發(fā)型服務(wù)器證書的CA是否可靠
返回的公鑰是否能正確解開返回證書中的數(shù)字簽名
服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配
驗(yàn)證通過后,將繼續(xù)進(jìn)行通信,否則,終止通信
4、服務(wù)端要求客戶端發(fā)送客戶端的證書,客戶端會(huì)將自己的證書發(fā)送至服務(wù)端
5、驗(yàn)證客戶端的證書,通過驗(yàn)證后,會(huì)獲得客戶端的公鑰
6、客戶端向服務(wù)端發(fā)送自己所能支持的對(duì)稱加密方案,供服務(wù)器端進(jìn)行選擇
7、服務(wù)器端在客戶端提供的加密方案中選擇加密程度最高的加密方式
8、將加密方案通過使用之前獲取到的公鑰進(jìn)行加密,返回給客戶端
9、客戶端收到服務(wù)端返回的加密方案密文后,使用自己的私鑰進(jìn)行解密,獲取具體加密方式,而后,
產(chǎn)生該加密方式的隨機(jī)碼,用作加密過程中的密鑰,使用之前從服務(wù)端證書中獲取到的公鑰進(jìn)行加密后
, 發(fā)送給服務(wù)端
10、服務(wù)端收到客戶端發(fā)送的消息后,使用自己的私鑰進(jìn)行解密,獲取對(duì)稱加密的密鑰,在接下來的會(huì)話中,服務(wù)器和客戶端將會(huì)使用該密碼進(jìn)行對(duì)稱加密,保證通信過程中信息的安全。