隨著網(wǎng)絡(luò)安全形勢(shì)越來(lái)越嚴(yán)峻,整個(gè)互聯(lián)網(wǎng)界似乎已經(jīng)達(dá)成了共識(shí):那就是盡一切可能提高網(wǎng)站的安全性。安全技術(shù)有很多,其中SSL/TLS非對(duì)稱加密技術(shù)及對(duì)應(yīng)的PKI公鑰架構(gòu)體系又是最重要的技術(shù)之一。由于其技術(shù)分支較為復(fù)雜,這里僅就幾個(gè)知識(shí)點(diǎn)做一下展開,以期幫助讀者更好的理解SSL。
成都創(chuàng)新互聯(lián)公司主營(yíng)青白江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,青白江h(huán)5微信小程序開發(fā)搭建,青白江網(wǎng)站營(yíng)銷推廣歡迎青白江等地區(qū)企業(yè)咨詢術(shù)語(yǔ):SSL、TLS、HTTPS三者,盡管確切含義各不相同,但它們作為非對(duì)稱加密技術(shù)的代表術(shù)語(yǔ),很多語(yǔ)境下都可以互相替換。
給網(wǎng)站申請(qǐng)https證書的過程是怎樣的?
在展開這個(gè)題目之前,先回顧一下PKI架構(gòu)。user, server, CA,這三者是PKI中的三個(gè)角色。user方接收到server發(fā)出的證書,并通過user自身客戶端(瀏覽器或者其他APP等程序)內(nèi)含的已信任CA(根證書)列表來(lái)做校驗(yàn),只有證實(shí)該server提供的https證書是已信任CA簽發(fā)的,https通信才可以繼續(xù)。
所以我們的https證書必須是主流CA簽發(fā)的才行。為什么強(qiáng)調(diào)“主流”?因?yàn)椴煌瑸g覽器使用的已信任CA列表可能是不盡相同的。IE,firefox,chrome,都帶有自己的根證書集合。大型電子商務(wù)網(wǎng)站必然使用最為知名的CA機(jī)構(gòu),例如verisign (已被symantec收購(gòu))、enTrust等等。
申請(qǐng)證書時(shí)候,需要給CA機(jī)構(gòu)提供證書簽發(fā)申請(qǐng)CSR文件(certificate sigining request)。大部分支持https的web服務(wù)程序都可以生成CSR文件。步驟如下:
1. 根據(jù)RSA算法生成公鑰私鑰對(duì)。私鑰即需要機(jī)密保管的以.key為后綴名的文件,公鑰則在.csr文件中。csr文件中還包括生成CSR過程中輸入的組織名、域名、聯(lián)系人郵箱等信息。
2. 發(fā)送CSR文件給證書供應(yīng)商,比如verisign。供應(yīng)商對(duì)CSR文件做處理,設(shè)置有效期限等,并做最為關(guān)鍵的動(dòng)作:用供應(yīng)商自己的私鑰對(duì)證書進(jìn)行簽名。這樣就生成了一張有效的SSL證書。
3. 用戶收到證書后,在web服務(wù)器(或負(fù)載均衡等設(shè)備)上,以此前的私鑰文件和收到的公鑰證書為密鑰對(duì),生成SSL配置文件,并綁定到對(duì)應(yīng)的web站點(diǎn)上。
客戶端是怎么驗(yàn)證https證書并確保加密通信是安全的呢?
以web訪問為例:
1. 客戶啟動(dòng)瀏覽器程序,訪問某個(gè)https加密站點(diǎn)。
2. 瀏覽器嘗試SSL握手,發(fā)送自身支持的各類加密算法的列表,同時(shí)從站點(diǎn)獲得對(duì)方的支持算法列表及該站點(diǎn)的證書。
3. 瀏覽器讀取證書的數(shù)字簽名部分,用自身根證書列表中對(duì)應(yīng)的公鑰證書對(duì)其進(jìn)行解密。如果解密成功,并且證書哈希值與簽名內(nèi)的哈希值匹配一致,可證明站點(diǎn)提供的證書確實(shí)是該CA根證書簽發(fā)的。此所謂“不可抵賴性”(non-repudiation)。
由于瀏覽器自身的根證書是隨著瀏覽器程序安裝而默認(rèn)獲得的,所以其安全性就取決于瀏覽器提供商的安全監(jiān)管機(jī)制。難怪google等公司會(huì)嚴(yán)格監(jiān)控internet上可能出現(xiàn)的CA舞弊行為。具體案例請(qǐng)見下一小節(jié)。
中級(jí)(intermediate)證書是怎么回事?
SSL支持證書鏈,所以可以從一張根證書簽發(fā)一張中級(jí)證書(可能繼續(xù)簽發(fā)第二、第三級(jí)中級(jí)證書),最后到終端證書。這主要有以下幾個(gè)方面的考慮:
1. 擴(kuò)展性:根據(jù)不同的服務(wù)級(jí)別,使用不同的中級(jí)證書的私鑰簽發(fā)終端證書。
2. 風(fēng)險(xiǎn)隔離:任一張中級(jí)證書的私鑰被盜,可以立即吊銷(revoke)這張中級(jí)證書,而其他中級(jí)證書可以保持安全性不受影響。
3. 商業(yè)授權(quán):根證書廠商簽發(fā)中級(jí)證書給二級(jí)證書廠商(即授權(quán)),二級(jí)廠商可以簽發(fā)終端證書給自己的客戶。這里面存在安全監(jiān)管的問題。去年和今年陸續(xù)出現(xiàn)了法國(guó)信息系統(tǒng)安全局(ANSSI)和中國(guó)CNNIC授權(quán)的中級(jí)證書廠商惡意(自稱“無(wú)意”)簽發(fā)了google域名的證書的重大安全事件。
ANSSI的事件,據(jù)其自稱是“使用不當(dāng),用自己運(yùn)營(yíng)的公網(wǎng)CA根證書對(duì)內(nèi)部私網(wǎng)環(huán)境簽發(fā)了google域名的證書給內(nèi)部測(cè)試使用”。但顯然這種辯解是站不住腳的。這張證書是否能用在公網(wǎng)上,完全只取決于用哪張CA根證書簽發(fā)。用了公網(wǎng)CA根證書(即屬于瀏覽器默認(rèn)配置的根證書集)做簽發(fā),則必定可以在公網(wǎng)上使用。只要建立一個(gè)釣魚站點(diǎn)綁定這張舞弊證書,再加上DNS劫持(這個(gè)很容易做到),用戶的google加密信息全部可以被盜取。真的很怕怕。怪不得微軟、谷歌等公司迅速通過各種途徑吊銷(revoke)了這張舞弊證書。
CNNIC事件也是類似。其簽發(fā)了一張中級(jí)證書給埃及一家公司,后者違規(guī)簽發(fā)了google.com域名的證書。由于SSL證書鏈的設(shè)計(jì),只要信任了CNNIC根證書的用戶,也隨之會(huì)信任這張埃及公司的舞弊證書。當(dāng)然了,CNNIC也隨之被chrome等瀏覽器開除了。
小伙伴們,中級(jí)證書的重要性不亞于根證書啊。
中級(jí)證書示例:
此外,還要提一下EV(extended validation)證書。這也是一種中級(jí)證書,并且從瀏覽器表現(xiàn)上顯得更”安全“一些。以chrome瀏覽器為例,使用EV證書的站點(diǎn),它的站點(diǎn)名左側(cè)的安全圖標(biāo)是綠色帶框的,跟普通的中級(jí)證書簽發(fā)的站點(diǎn)(綠色不帶框)略有不同。算法上EV跟其他中級(jí)證書完全一致。能否體現(xiàn)“更安全”的圖標(biāo),也取決于瀏覽器的支持。可以理解為網(wǎng)站購(gòu)買了CA供應(yīng)商的VIP服務(wù),并不表示證書一定在算法上更安全。算法安全性方面的問題,客官請(qǐng)往下看。
為什么我升級(jí)了SSL證書到SHA256算法,但瀏覽器里還是顯示SHA1?
-- 證書算法安全性與站點(diǎn)的SSL/TLS算法安全性的區(qū)別
加密算法流派眾多,確實(shí)很容易混淆。即使有一定經(jīng)驗(yàn)的IT工程師依然會(huì)分不清哪些算法是證書提供的,哪些是站點(diǎn)本身提供的。
RSA:證書提供。非對(duì)稱加密算法。SSL證書大部分使用此算法生成公鑰私鑰對(duì)。用于對(duì)SSL/TLS會(huì)話中的對(duì)稱秘鑰進(jìn)行加密/解密。RSA2048bit算法很安全,目前不需要升級(jí)或替換。
MD5/SHA1/SHA2:證書提供。散列/哈希/摘要算法。用于驗(yàn)證簽名真實(shí)性。按安全性來(lái)排序,MD5 DES/AES:站點(diǎn)提供。對(duì)稱加密算法。用于實(shí)際的數(shù)據(jù)加密傳輸。對(duì)稱算法的秘鑰一般稱為cipher,以顯示跟口令(password)、私鑰(private key)的區(qū)別。展開來(lái)說(shuō),對(duì)稱加密算法在SSL/TLS里實(shí)現(xiàn)的時(shí)候還是很復(fù)雜的,一般可能的cipher算法有(僅舉幾例): SSL3-DES-CBC3-SHA #SSL3協(xié)議,DES對(duì)稱加密使用CBC3塊加密模式(另一種是流加密),SHA摘要算法 TLS1-AES-128-CBC-SHA #TLS1協(xié)議,AES對(duì)稱加密使用CBC塊加密模式,SHA摘要算法 具體使用何種對(duì)稱加密算法,取決于SSL握手時(shí)候的協(xié)商結(jié)果。 SSL加密傳輸過程中,非對(duì)稱秘鑰用于對(duì)“對(duì)稱秘鑰”的加密,而信息本身用對(duì)稱秘鑰進(jìn)行加密。這是因?yàn)椋?/p> 對(duì)稱加密:計(jì)算資源消耗低,但秘鑰無(wú)法安全傳輸 非對(duì)稱加密:計(jì)算資源消耗高,但秘鑰可以安全傳輸 所以為了折中這對(duì)矛盾,SSL/TLS采用了現(xiàn)在的方案:用非對(duì)稱加密來(lái)傳輸對(duì)稱秘鑰,用對(duì)稱秘鑰對(duì)數(shù)據(jù)進(jìn)行加密。這就平衡了安全性和計(jì)算資源消耗性的這對(duì)蹺蹺板。 怎樣查看SSL證書的詳細(xì)信息? 除了用瀏覽器本身的圖形化界面方式查看信息,還可以用openssl命令工具查看更多內(nèi)容。以雅虎網(wǎng)站為例。查看其證書信息的命令: openssl s_client -connect www.yahoo.com:443 | openssl x509 -text 在上面的輸出中,我們看到其簽名算法是SHA1,公鑰加密算法是RSA。公鑰長(zhǎng)度是2048位,這個(gè)也是目前推薦的秘鑰長(zhǎng)度。托摩爾定律的福,計(jì)算機(jī)性能不斷飛速發(fā)展,以前(當(dāng)然也包括現(xiàn)在)在用的1024位的RSA秘鑰已經(jīng)不×××全了。各大瀏覽器即將在2015年停止支持1024位RSA證書。而CA廠商方面,這兩年已經(jīng)停止簽發(fā)RSA1024位的證書。 查看SSL握手信息(比如cipher協(xié)商結(jié)果),可以直接運(yùn)行: openssl s_client -connectwww.yahoo.com:443 也可以看到,此次SSL握手協(xié)商好的cipher算法是ECDHE-RSA-AES128-GCM-SHA256。好長(zhǎng)的名字,一看就安全感倍增啊。 搞清楚了這些,在當(dāng)前簽名算法從SHA1向SHA2升級(jí)的日子里,看到瀏覽器信息里顯示證書的“指紋算法為SHA1”也不用感到疑惑了! 另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:有關(guān)SSL證書的一些事兒-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/phssd.html