簡(jiǎn)介
http其實(shí)由HTTP+SSL/TLS組成,相當(dāng)于http加上一層加密算法,客戶端與服務(wù)端傳輸數(shù)據(jù)都是加密的。一開(kāi)始采用非對(duì)稱加密,后續(xù)采用對(duì)稱加密,因?yàn)槌掷m(xù)的非對(duì)稱加密很耗費(fèi)時(shí)間性能。加密過(guò)程如下:

1.客戶端發(fā)起HTTPS請(qǐng)求
2.服務(wù)端提前配置
應(yīng)用https協(xié)議的服務(wù)器必須要一套HTTPS證書(shū),證書(shū)可自生成(免費(fèi)),可向第三方組織申請(qǐng)(收費(fèi))。證書(shū)本質(zhì)上為公鑰與私鑰。Java環(huán)境需要導(dǎo)入證書(shū)到j(luò)dk/jre security路徑下。
3.傳送證書(shū)
4.客戶端解析證書(shū)
客戶端需要驗(yàn)證證書(shū)有效性,可向第三方驗(yàn)證。自制作證書(shū)會(huì)在瀏覽器提示“您的連接不是私密連接”,點(diǎn)擊繼續(xù)為信任自制證書(shū)。
5.客戶端發(fā)送對(duì)稱加密秘鑰
生成隨機(jī)值(后續(xù)處理即為對(duì)稱加密的秘鑰),利用證書(shū)(公鑰)加密隨機(jī)值。
6.服務(wù)端解密
服務(wù)端私鑰解密獲取隨機(jī)值(處理即為對(duì)稱加密的秘鑰)
7.開(kāi)始運(yùn)用對(duì)稱加密的秘鑰進(jìn)行加密傳輸
8.客戶端用對(duì)稱加密的秘鑰解密
開(kāi)發(fā)相關(guān)
開(kāi)發(fā)時(shí),一般http接口改造為https接口,服務(wù)端導(dǎo)入證書(shū)即可。渠道方服務(wù)端訪問(wèn)權(quán)益方服務(wù)端對(duì)接HTTPS接口需要校驗(yàn)證書(shū)有效性有兩種方法
1.導(dǎo)入https證書(shū)(公鑰),可向權(quán)益方索取,網(wǎng)絡(luò)通情況下也可以chrome訪問(wèn)接口下載證書(shū)(公鑰)。java開(kāi)發(fā)環(huán)境下可以導(dǎo)入到JDK/JRE 下的security。注意服務(wù)需要重啟。
2.也可以跳過(guò)證書(shū)有效性校驗(yàn):無(wú)條件信任對(duì)方返回的證書(shū)(公鑰)。
新建SSLClient繼承DefaultHttpClient,重寫(xiě)相關(guān)方法即可。