SSL證書設(shè)定

1 基本證書原理

常用的基本協(xié)議:



客戶端執(zhí)行https請(qǐng)求時(shí)勉痴,需要由TCP協(xié)議建立和釋放連接窘疮。這就涉及TCP協(xié)議的三次握手和四次揮手矫付。

TCP建立連接三次握手

  • C-->S: 請(qǐng)求
  • C<--S:ACK
  • C-->S:確認(rèn)

TCP的四次揮手

  • C-->S: 我的數(shù)據(jù)發(fā)送完成
  • C<--S:確認(rèn)C 發(fā)送完成
  • C<--S:確認(rèn)S數(shù)據(jù)也發(fā)送完成
  • C-->S:確認(rèn)結(jié)束

http : 明文傳輸


http 攻擊

https : 使用密鑰傳輸數(shù)據(jù)


https 缺點(diǎn)

對(duì)稱加密:使用同一key 加密解密揭斧, 因此key 傳輸是由風(fēng)險(xiǎn)的
非對(duì)稱加密: 使用公鑰舰始,私鑰崇棠,公鑰可以任意獲取,私鑰存在服務(wù)器
公鑰證書:含有公鑰丸卷,含有頒發(fā)組織易茬,申請(qǐng)者信息....

采用非對(duì)稱加密對(duì)https 缺點(diǎn)的改進(jìn),引入了CA及老, 進(jìn)行公開秘鑰


CA 流程
  • 1-服務(wù)器的運(yùn)營(yíng)人員向數(shù)字證書認(rèn)證機(jī)構(gòu)(CA)提出公開密鑰的申請(qǐng);
  • 2- CA通過線上抽莱、線下等多種手段驗(yàn)證申請(qǐng)者提供信息的真實(shí)性,如組織是否存在骄恶、企業(yè)是否合法食铐,是否擁有域名的所有權(quán)等;
  • 3- 如果信息審核通過僧鲁,CA會(huì)對(duì)已申請(qǐng)的公開密鑰做數(shù)字簽名虐呻,然后分配這個(gè)已簽名的公開密鑰,并將該公開密鑰放入公鑰證書后綁定在一起寞秃。
    證書包含以下信息:申請(qǐng)者公鑰斟叼、申請(qǐng)者的組織信息和個(gè)人信息、簽發(fā)機(jī)構(gòu)CA的信息春寿、有效時(shí)間朗涩、證書序列號(hào)等信息的明文,同時(shí)包含一個(gè)簽名绑改;
    簽名的產(chǎn)生算法:首先谢床,使用散列函數(shù)計(jì)算公開的明文信息的信息摘要,然后厘线,采用CA的私鑰對(duì)信息摘要進(jìn)行加密识腿,密文即簽名;
  • 4- 客戶端在HTTPS握手階段向服務(wù)器發(fā)出請(qǐng)求造壮,要求服務(wù)器返回證書文件渡讼;
  • 5- 客戶端讀取證書中的相關(guān)的明文信息,采用相同的散列函數(shù)計(jì)算得到信息摘要,然后成箫,利用對(duì)應(yīng)CA的公鑰解密簽名數(shù)據(jù)栖雾,對(duì)比證書的信息摘要,如果一致伟众,則可以確認(rèn)證書的合法性,即公鑰合法召廷;
  • 6- 客戶端然后驗(yàn)證證書相關(guān)的域名信息凳厢、有效時(shí)間等信息;
  • 7- 客戶端會(huì)內(nèi)置信任CA的證書信息(包含公鑰)竞慢,如果CA不被信任先紫,則找不到對(duì)應(yīng)CA的證書,證書也會(huì)被判定非法筹煮。

1.1 -HTTPS 單向傳輸
HTTPS遮精,它還要運(yùn)行SSL/TLS協(xié)議,SSL/TLS協(xié)議分兩層败潦,第一層是記錄協(xié)議本冲,主要用于傳輸數(shù)據(jù)的加密壓縮;第二層是握手協(xié)議劫扒,它建立在第一層協(xié)議之上檬洞,主要用于數(shù)據(jù)傳輸前的雙方身份認(rèn)證、協(xié)商加密算法沟饥、交換密鑰添怔。

SSL 握手協(xié)議的交換流程: (wireshark分析)


功能上分析:


對(duì)DH 算法說明,就是采用了隨機(jī)數(shù)+ 算法贤旷,使得C與S 可以共享密鑰广料, 在https 是最后C 傳給S 的pubkey 是通過公鑰證書加密了,因此服務(wù)獲取后幼驶,使用私鑰解密即可艾杏。在https 首先使用了非對(duì)稱加密,然后采用了對(duì)稱加密傳輸數(shù)據(jù)盅藻。


wireshark: 數(shù)據(jù)


4357:Client Hello信號(hào)糜颠,客戶端發(fā)送隨機(jī)數(shù)字+自己可以支持的加密方法。
4366:Server Hello信號(hào)萧求,服務(wù)器發(fā)送隨機(jī)數(shù)字+選擇雙方都支持的加密方式其兴,這里選擇的是TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,后面還將自己的證書發(fā)送了
4369:發(fā)送自己的公鑰和從CA申請(qǐng)的證書
4375:發(fā)送基于DH 的證書夸政,公鑰不被證書中包含元旬,需要單獨(dú)發(fā)送,DH 算法相關(guān)
4367:server 完成了發(fā)送DH, 選擇了加密方式,基本完成client 的握手

4386: client 在接受到4366 之后的消息后就可開始了執(zhí)行相應(yīng)的client 的邏輯。例如收到4375 發(fā)送的證書后匀归,驗(yàn)證證書的有效性【是否具有公鑰的第三方數(shù)字簽名坑资?保證安全盡量公鑰還是采用第三方數(shù)字簽名】,在此之后穆端,這個(gè)握手算是結(jié)束袱贮, client 與server 開始了采用使用對(duì)稱密鑰加解密數(shù)據(jù)傳輸。 認(rèn)為: 這里對(duì)稱密鑰沒有通過網(wǎng)絡(luò)傳遞体啰,DH 算法傳遞的只是一些公開的數(shù)據(jù)攒巍,因此保證了對(duì)稱密鑰的安全,不能被網(wǎng)絡(luò)竊取數(shù)據(jù)

4405~4407:主要考慮再次通信的方便性荒勇,new session ticket,這樣的操作是為了之后不用再進(jìn)行握手柒莉,節(jié)約服務(wù)器的資源

舉例再次通信:【沒有了發(fā)送證書的環(huán)節(jié)Certificate】


wireshark:分析的原始數(shù)據(jù):
鏈接:https://pan.baidu.com/s/1kdMaIs7tQ7epmUgWqPBgOQ
提取碼:2f03

1.2 -HTTPS 雙向傳輸
使用單向驗(yàn)證還是雙向驗(yàn)證,是服務(wù)器決定的沽翔。一般而言兢孝,我們的服務(wù)器都是對(duì)所有客戶端開放的,所以服務(wù)器默認(rèn)都是使用單向驗(yàn)證仅偎。如果你使用的是Tomcat服務(wù)器跨蟹,在配置文件server.xml中,配置Connector節(jié)點(diǎn)的clientAuth屬性即可橘沥。若為true喷市,則使用雙向驗(yàn)證,若為false威恼,則使用單向驗(yàn)證品姓。如果你的服務(wù),只允許特定的客戶端訪問箫措,那就需要使用雙向驗(yàn)證了腹备。

就是相當(dāng)于兩個(gè)C[s]<--->S[c], 客戶端與服務(wù)器端都有各自的公鑰與私鑰。

總結(jié):

  • 單向驗(yàn)證中斤蔓,如果是你客戶端植酥,你需要拿到服務(wù)器的證書,并放到你的信任庫(kù)中弦牡;如果是服務(wù)端友驮,你要生成私鑰和證書,并將這兩個(gè)放到你的密鑰庫(kù)中驾锰,并且將證書發(fā)給所有客戶端卸留。

  • 雙向驗(yàn)證中,如果你是客戶端椭豫,你要生成客戶端的私鑰和證書耻瑟,將它們放到密鑰庫(kù)中旨指,并將證書發(fā)給服務(wù)端,同時(shí)喳整,在信任庫(kù)中導(dǎo)入服務(wù)端的證書谆构。如果你是服務(wù)端,除了在密鑰庫(kù)中保存服務(wù)器的私鑰和證書框都,還要在信任庫(kù)中導(dǎo)入客戶端的證書搬素。

  • 再次強(qiáng)調(diào),使用單向驗(yàn)證還是雙向驗(yàn)證魏保,是服務(wù)器決定的召锈。

2android 實(shí)現(xiàn)https 通信

2.1 ,根證書
從It 獲取公司的公鑰證書與根證書

根證書做成xxx.0 形式放置在
system/ca-certificates/files/
system/ca-certificates/google/files/

#openssl x509 -inform PEM -subject_hash_old -in xxx.pem | head -1
#9849bb9b
#touch 9849bb9b.0
#openssl x509 -inform PEM -subject_hash_old -in xxx.ai.pem -text > 9849bb9b.0
然后看9849bb9b.0仲器, 是否與其他xxx.0格式基本一致就可以了

如果公司的證書是續(xù)簽的缔恳,一般情況根證書是不會(huì)變的樊拓。

2.2,公鑰證書
這個(gè)要看code 寫法餐塘, 從哪里讀取公鑰證書
InputStream is = getApplicationContext().getAssets().open("srca.cer");
上面的就是公鑰srca.cer妥衣,如果從IT 哪里獲取的不是cer, 就需要抓換
openssl x509 -inform pem -in xxx.pem -outform der -out xxx.cer
查看生成文件的信息:
openssl x509 -inform der -in xxxx.cer -noout -text
其他方式轉(zhuǎn)換REF:
windows 方式轉(zhuǎn)換

2.3 ,服務(wù)器證書
服務(wù)放置對(duì)應(yīng)的公鑰證書與私鑰證書就可以了,這個(gè)放置的位置通常與開發(fā)服務(wù)器的code 有關(guān)系戒傻,有開發(fā)code 決定(ex:ota/conf /app.conf)

如何進(jìn)行調(diào)試:
1,服務(wù)器已經(jīng)搭建好税手,使用ubuntu 系統(tǒng),測(cè)試獲取證書需纳,check 是否與服務(wù)器公鑰一致
openssl s_client -showcerts -connect xxxx(服務(wù)器域名):443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts
2芦倒,通過網(wǎng)頁(yè)獲取查看, 查看證書不翩,如果服務(wù)有下載連接兵扬,可以通過瀏覽器查看是否可以下載。如果瀏覽器都是可以的口蝠,那就說明器钟,android 設(shè)備哪里設(shè)定有問題
瀏覽器查看證書:



其他指令:
openssl x509 -in xxx.crt -out mycert2391236.pem

REF:
Android的證書驗(yàn)證過程
https 基本原理及概念
證書制作
https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA
https://blog.csdn.net/lee244868149/article/details/51790397/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市妙蔗,隨后出現(xiàn)的幾起案子傲霸,更是在濱河造成了極大的恐慌,老刑警劉巖眉反,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昙啄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寸五,警方通過查閱死者的電腦和手機(jī)梳凛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梳杏,“玉大人伶跷,你說我怎么就攤上這事掰读。” “怎么了叭莫?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蹈集,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我雇初,道長(zhǎng)拢肆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任靖诗,我火速辦了婚禮郭怪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刊橘。我一直安慰自己鄙才,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布促绵。 她就那樣靜靜地躺著攒庵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪败晴。 梳的紋絲不亂的頭發(fā)上浓冒,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音尖坤,去河邊找鬼稳懒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慢味,可吹牛的內(nèi)容都是我干的场梆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纯路,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辙谜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起感昼,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤装哆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后定嗓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜕琴,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年宵溅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凌简。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恃逻,死狀恐怖雏搂,靈堂內(nèi)的尸體忽然破棺而出藕施,到底是詐尸還是另有隱情,我是刑警寧澤凸郑,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布裳食,位于F島的核電站,受9級(jí)特大地震影響芙沥,放射性物質(zhì)發(fā)生泄漏诲祸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一而昨、第九天 我趴在偏房一處隱蔽的房頂上張望救氯。 院中可真熱鬧,春花似錦歌憨、人聲如沸着憨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甲抖。三九已至,卻和暖如春植袍,著一層夾襖步出監(jiān)牢的瞬間惧眠,已是汗流浹背籽懦。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工于个, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暮顺。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓厅篓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捶码。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羽氮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355