中對(duì)證書鏈的驗(yàn)證

中對(duì)證書鏈的驗(yàn)證

ID:33594337

大?。?35.43 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2019-02-27

中對(duì)證書鏈的驗(yàn)證_第1頁(yè)
中對(duì)證書鏈的驗(yàn)證_第2頁(yè)
中對(duì)證書鏈的驗(yàn)證_第3頁(yè)
中對(duì)證書鏈的驗(yàn)證_第4頁(yè)
中對(duì)證書鏈的驗(yàn)證_第5頁(yè)
資源描述:

《中對(duì)證書鏈的驗(yàn)證》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、iOS中對(duì)HTTPS證書鏈的驗(yàn)證這篇文章是我一邊學(xué)習(xí)證書驗(yàn)證一邊記錄的內(nèi)容,稍微整理了下,共扯了三部分內(nèi)容:1.HTTPS簡(jiǎn)要原理;2.數(shù)字證書的內(nèi)容、生成及驗(yàn)證;3.iOS上對(duì)證書鏈的驗(yàn)證。HTTPS概要HTTPS是運(yùn)行在TLS/SSL之上的HTTP,與普通的HTTP相比,在數(shù)據(jù)傳輸?shù)陌踩陨嫌泻艽蟮奶嵘R私馑踩缘那擅钪?,需要先?jiǎn)單地了解對(duì)稱加密和非對(duì)稱加密的區(qū)別:·對(duì)稱加密只有一個(gè)密鑰,加密和解密都用這個(gè)密鑰;·非對(duì)稱加密有公鑰和私鑰,私鑰加密后的內(nèi)容只有公鑰才能解密,公鑰加密的內(nèi)容只有私鑰才能解密。為了提高安全性,我們常用的做法是使用對(duì)稱加密的手段加密數(shù)據(jù)??墒?/p>

2、只使用對(duì)稱加密的話,雙方通信的開(kāi)始總會(huì)以明文的方式傳輸密鑰。那么從一開(kāi)始這個(gè)密鑰就泄露了,談不上什么安全。所以TLS/SSL在握手的階段,結(jié)合非對(duì)稱加密的手段,保證只有通信雙方才知道對(duì)稱加密的密鑰。大概的流程如下:TSL:SSL_handshake.png所以,HTTPS實(shí)現(xiàn)傳輸安全的關(guān)鍵是:在TLS/SSL握手階段保證僅有通信雙方得到SessionKey!數(shù)字證書的內(nèi)容X.509應(yīng)該是比較流行的SSL數(shù)字證書標(biāo)準(zhǔn),包含(但不限于)以下的字段:字段值說(shuō)明對(duì)象名稱(SubjectName)用于識(shí)別該數(shù)字證書的信息共有名稱(CommonName)對(duì)于客戶證書,通常是相應(yīng)的域名證書頒

3、發(fā)者(IssuerName)發(fā)布并簽署該證書的實(shí)體的信息簽名算法(SignatureAlgorithm)簽名所使用的算法序列號(hào)(SerialNumber)數(shù)字證書機(jī)構(gòu)(CertificateAuthority,CA)給證書的唯一整數(shù),一個(gè)數(shù)字證書一個(gè)序列號(hào)生效期(NotValidBefore)(`?ω?′)失效期(NotValidAfter)(╯°口°)╯(┴—┴公鑰(PublicKey)可公開(kāi)的密鑰簽名(Signature)通過(guò)簽名算法計(jì)算證書內(nèi)容后得到的數(shù)據(jù),用于驗(yàn)證證書是否被篡改除了上述所列的字段,還有很多拓展字段,在此不一一詳述。下圖為Wikipedia的公鑰證書:wi

4、kipedia_cer.png數(shù)字證書的生成及驗(yàn)證數(shù)字證書的生成是分層級(jí)的,下一級(jí)的證書需要其上一級(jí)證書的私鑰簽名。所以后者是前者的證書頒發(fā)者,也就是說(shuō)上一級(jí)證書的SubjectName是其下一級(jí)證書的IssuerName。在得到證書申請(qǐng)者的一些必要信息(對(duì)象名稱,公鑰私鑰)之后,證書頒發(fā)者通過(guò)SHA-256哈希得到證書內(nèi)容的摘要,再用自己的私鑰給這份摘要加密,得到數(shù)字簽名。綜合已有的信息,生成分別包含公鑰和私鑰的兩個(gè)證書。扯到這里,就有幾個(gè)問(wèn)題:?jiǎn)枺喝绻f(shuō)發(fā)布一個(gè)數(shù)字證書必須要有上一級(jí)證書的私鑰加密,那么最頂端的證書——根證書怎么來(lái)的?根證書是自簽名的,即用自己的私鑰簽名,不

5、需要其他證書的私鑰來(lái)生成簽名。問(wèn):怎么驗(yàn)證證書是有沒(méi)被篡改?當(dāng)客戶端走HTTPS訪問(wèn)站點(diǎn)時(shí),服務(wù)器會(huì)返回整個(gè)證書鏈。以下圖的證書鏈為例:chain_hierarchy.png要驗(yàn)證?*.wikipedia.org?這個(gè)證書有沒(méi)被篡改,就要用到?GlobalSignOrganizationValidationCA-SHA256-G2?提供的公鑰解密前者的簽名得到摘要Digest1,我們的客戶端也計(jì)算前者證書的內(nèi)容得到摘要Digest2。對(duì)比這兩個(gè)摘要就能知道前者是否被篡改。后者同理,使用?GlobalSignRootCA?提供的公鑰驗(yàn)證。當(dāng)驗(yàn)證到到受信任的根證書時(shí),就能確定?*.

6、wikipedia.org?這個(gè)證書是可信的。問(wèn):為什么上面那個(gè)根證書?GlobalSignRootCA?是受信任的?數(shù)字證書認(rèn)證機(jī)構(gòu)(CertificateAuthority,CA)簽署和管理的?CA根證書,會(huì)被納入到你的瀏覽器和操作系統(tǒng)的可信證書列表中,并由這個(gè)列表判斷根證書是否可信。所以不要隨便導(dǎo)入奇奇怪怪的根證書到你的操作系統(tǒng)中。問(wèn):生成的數(shù)字證書(如?*.wikipedia.org)都可用來(lái)簽署新的證書嗎?不一定。如下圖,拓展字段里面有個(gè)叫BasicConstraints的數(shù)據(jù)結(jié)構(gòu),里面有個(gè)字段叫路徑長(zhǎng)度約束(PathLengthConstraint),表明了該證書能

7、繼續(xù)簽署CA子證書的深度,這里為0,說(shuō)明這個(gè)?GlobalSignOrganizationValidationCA-SHA256-G2?只能簽署客戶端證書,而客戶端證書不能用于簽署新的證書,CA子證書才能這么做。path_length_constraint.pngiOS上對(duì)證書鏈的驗(yàn)證在?OverridingTLSChainValidationCorrectly?中提到:WhenaTLScertificateisverified,theoperatingsystemverifiesitsch

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。