1. 程式人生 > >[搬運]數字證書及 CA 的掃盲介紹

[搬運]數字證書及 CA 的掃盲介紹

本文轉載自大神程式設計隨想的部落格。閱讀原文需要科學上網,建議有條件者直接閱讀原文,本文轉載只為方便牆內閱讀與存檔學習。

數字證書及 CA 的掃盲介紹

文章目錄

  • 先說一個通俗的例子
  • 相關專業術語的解釋
  • 證書有啥用?
  • 總結

最近1-2周,關於 CNNIC 的 CA 證書問題,網上搞得沸沸揚揚。但是俺發覺,即使是一些 IT 行業的技術人員,也搞不太明白該問題的嚴重性(至於不懂技術的傻瓜使用者,就更甭提了)。主要在於 CA 證書是一個相對專業的東東,大夥兒平時接觸不多。

所以,俺打算寫3個帖子:第1個用來掃盲 CA 證書的基礎知識(也就是本帖);第2個則用來揭露 CNNIC 這個老流氓的醜惡歷史(在“

這裡”);第3個介紹如何 CNNIC 證書的危害及清除方法(在“這裡”)。為了達到普及的效果,俺會盡量用比較淺顯,非技術的語言來講清楚這事兒。

先說一個通俗的例子

考慮到證書體系的相關知識比較枯燥、晦澀。俺先拿一個通俗的例子來說事兒。

普通的介紹信

想必大夥兒都聽說過介紹信的例子吧?假設 A 公司的張三先生要到 B 公司去拜訪,但是 B 公司的所有人都不認識他,他咋辦捏?常用的辦法是帶公司開的一張介紹信,在信中說:茲有張三先生前往貴公司辦理業務,請給予接洽……云云。然後在信上敲上A公司的公章。

張三先生到了 B 公司後,把介紹信遞給 B 公司的前臺李四小姐。李小姐一看介紹信上有 A 公司的公章,而且A公司是經常和 B 公司有業務往來的,這位李小姐就相信張先生不是歹人了。

說到這,愛擡槓的同學會問了:萬一公章是偽造的,咋辦捏?在此,俺要先宣告,在本例子中,先假設公章是難以偽造滴,否則俺的故事沒法說下去鳥。

引入中介機構的介紹信

好,回到剛才的話題。如果和 B 公司有業務往來的公司很多,每個公司的公章都不同,那前臺就要懂得分辨各種公章,非常滴麻煩。所以,有某個中介公司 C,發現了這個商機。C公司專門開設了一項“代理公章”的業務。

今後,A 公司的業務員去B公司,需要帶2個介紹信:

  1. 介紹信1:含有 C 公司的公章及 A 公司的公章。並且特地註明:C 公司信任A公司。
  2. 介紹信2:僅含有 A 公司的公章,然後寫上:茲有張三先生前往貴公司辦理業務,請給予接洽……云云。

某些不開竅的同學會問了,這樣不是增加麻煩了嗎?有啥好處捏?

主要的好處在於,對於接待公司的前臺,就不需要記住各個公司的公章分別是啥樣子的;他/她只要記住中介公司 C 的公章即可。當他/她拿到兩份介紹信之後,先對“介紹信1”的 C 公章,驗明正身;確認無誤之後,再比對“介紹信1”和“介紹信2”的兩個 A 公章是否一致。如果是一樣的,那就可以證明“介紹信2”是可以信任的了。

相關專業術語的解釋

費了不少口水,終於說完了一個俺自認為比較通俗的例子。如果你聽到到這,還是想不明白這個例子在說啥,那後續的內容,就不必浪費時間聽了 :(

下面,俺就著上述的例子,把相關的名詞,作一些解釋。

什麼是證書?

“證書”洋文也叫“digital certificate”或“public key certificate”(專業的解釋看“這裡”)。

它是用來證明某某東西確實是某某東西的東西(是不是像繞口令?)。通俗地說,證書就好比例子裡面的公章。通過公章,可以證明該介紹信確實是對應的公司發出的。

理論上,人人都可以找個證書工具,自己做一個證書。那如何防止壞人自己製作證書出來騙人捏?請看後續 CA 的介紹。

什麼是CA?

CA 是“Certificate Authority”的縮寫,也叫“證書授權中心”。(專業的解釋看“這裡”)

它是負責管理和簽發證書的第三方機構,就好比例子裡面的中介——C 公司。一般來說,CA 必須是所有行業和所有公眾都信任的、認可的。因此它必須具有足夠的權威性。就好比A、B兩公司都必須信任 C 公司,才會找 C 公司作為公章的中介。

什麼是CA證書?

CA 證書,顧名思義,就是CA頒發的證書。

前面已經說了,人人都可以找工具製作證書。但是你一個小破孩製作出來的證書是沒啥用處的。因為你不是權威的 CA 機關,你自己搞的證書不具有權威性。

這就好比上述的例子裡,某個壞人自己刻了一個公章,蓋到介紹信上。但是別人一看,不是受信任的中介公司的公章,就不予理睬。壞蛋的陰謀就不能得逞啦。

文字後續提及的證書,若無特殊說明,均指 CA 證書。

什麼是證書之間的信任關係?

在俺的例子裡談到,引入中介後,業務員要同時帶兩個介紹信。第一個介紹信包含了兩個公章,並註明,公章C信任公章A。證書間的信任關係,就和這個類似。就是用一個證書來證明另一個證書是真實可信滴。

什麼是證書信任鏈?

實際上,證書之間的信任關係,是可以巢狀的。比如,C 信任 A1,A1 信任 A2,A2 信任 A3……這個叫做證書的信任鏈。只要你信任鏈上的頭一個證書,那後續的證書,都是可以信任滴。

什麼是根證書?

“根證書”的洋文叫“root certificate”,專業的解釋看“這裡”。為了說清楚根證書是咋回事,再來看個稍微複雜點的例子。

假設 C 證書信任 A 和 B;然後 A 信任 A1 和 A2;B 信任 B1 和 B2。則它們之間,構成如下的一個樹形關係(一個倒立的樹)。

處於最頂上的樹根位置的那個證書,就是“根證書”。除了根證書,其它證書都要依靠上一級的證書,來證明自己。那誰來證明“根證書”可靠捏?實際上,根證書自己證明自己是可靠滴(或者換句話說,根證書是不需要被證明滴)。

聰明的同學此刻應該意識到了:根證書是整個證書體系安全的根本。所以,如果某個證書體系中,根證書出了問題(不再可信了),那麼所有被根證書所信任的其它證書,也就不再可信了。這個後果是相當相當滴嚴重(簡直可以說是災難性的),具體在下一個帖子裡介紹。

證書有啥用?

CA 證書的作用有很多,俺為了節省口水,只列出常用的幾個。

驗證網站是否可信(針對HTTPS)

通常,我們如果訪問某些敏感的網頁(比如使用者登入的頁面),其協議都會使用 HTTPS 而不是 HTTP。因為 HTTP 協議是明文的,一旦有壞人在偷窺你的網路通訊,他/她就可以看到網路通訊的內容(比如你的密碼、銀行帳號、等);而 HTTPS 是加密的協議,可以保證你的傳輸過程中,壞蛋無法偷窺。

但是,千萬不要以為,HTTPS 協議有了加密,就可高枕無憂了。俺再舉一個例子來說明,光有加密是不夠滴。假設有一個壞人,搞了一個假的網銀的站點,然後誘騙你上這個站點。假設你又比較單純,一不留神,就把你的帳號,口令都輸入進去了。那這個壞蛋的陰謀就得逞鳥。

為了防止壞人這麼幹,HTTPS 協議除了有加密的機制,還有一套證書的機制。通過證書來確保,某個站點確實就是某個站點。

有了證書之後,當你的瀏覽器在訪問某個 HTTPS 網站時,會驗證該站點上的 CA 證書(類似於驗證介紹信的公章)。如果瀏覽器發現該證書沒有問題(證書被某個根證書信任、證書上繫結的域名和該網站的域名一致、證書沒有過期),那麼頁面就直接開啟;否則的話,瀏覽器會給出一個警告,告訴你該網站的證書存在某某問題,是否繼續訪問該站點?為了形象起見,下面給出 IE 和 Firefox 的抓圖:

大多數知名的網站,如果用了 HTTPS 協議,其證書都是可信的(也就不會出現上述警告)。所以,今後你如果上某個知名網站,發現瀏覽器跳出上述警告,你就要小心啦!

驗證某檔案是否可信(是否被篡改)

證書除了可以用來驗證某個網站,還可以用來驗證某個檔案是否被篡改。具體是通過證書來製作檔案的數字簽名。製作數字簽名的過程太專業,咱就不說了。後面專門告訴大家如何驗證檔案的數字簽名。考慮到大多數人用 Windows 系統,俺就拿 Windows 的例子來說事兒。

比如,俺手頭有一個 Firefox 的安裝檔案(帶有數字簽名)。當俺檢視該檔案的屬性,會看到如下的介面。眼神好的同學,會注意到到上面有個“數字簽名”的標籤頁。如果沒有出現這個標籤頁,就說明該檔案沒有附帶數字簽名。

選擇該標籤頁,看到如下介面。
  
順便說一下,某些數字簽名中沒有包含“郵件地址”,那麼這一項會顯示“不可用”;同樣的,某些數字簽名沒有包含“時間戳”,也會顯示“不可用”。不要緊張,這裡顯示的“不可用”跟數字簽名的有效性沒關係。

一般來說,簽名列表中,有且僅有一個簽名。選中它,點“詳細資訊”按鈕。跳出如下介面:

通常這個介面會顯示一行字:“該數字簽名正常”(圖中紅圈標出)。如果有這行字,就說明該檔案從出廠到你手裡,中途沒有被篡改過(是原裝滴、是純潔滴)。

如果該檔案被篡改過了(比如,感染了病毒、被注入木馬),那麼對話方塊會出現一個警告提示“該數字簽名無效”(圖中紅圈標出)。介面如下:

不論簽名是否正常,你都可以點“檢視證書”按鈕。這時候,會跳出證書的對話方塊。如下:

從後一個介面,可以看到俺剛才說的證書信任鏈。圖中的信任鏈有3層:

  1. 第1層是根證書(Thawte Premium Server CA)
  2. 第2層是 Thawte 專門用來簽名的證書
  3. 第3層是 Mozilla 自己的證書

目前大多數知名的公司(或組織機構),其釋出的可執行檔案(比如軟體安裝包、驅動程式、安全補丁),都帶有數字簽名。你可以自己去看一下。

建議大夥兒在安裝軟體之前,都先看看是否有數字簽名?如果有,就按照上述步驟驗證一把。一旦數字簽名是壞的,那可千萬別裝。

總結

費了半天口舌,大致介紹了 CA 證書相關的概念。想更深入瞭解這方面知識的同學,可以找些資訊保安或密碼學方面的資料,繼續鑽研。

如果哪個同學覺得俺有說得不對的地方,或者有需要補充的內容,歡迎到本文留言。

俺部落格上,和本文相關的帖子(需翻牆):

相關推薦

[搬運]數字證書 CA掃盲介紹

本文轉載自大神程式設計隨想的部落格。閱讀原文需要科學上網,建議有條件者直接閱讀原文,本文轉載只為方便牆內閱讀與存檔學習。 數字證書及 CA 的掃盲介紹 文章目錄 先說一個通俗的例子 相關專業術語的解釋 證書有啥用? 總結 最近1-2周,關

數字證書 CA掃盲介紹

轉自:http://www.sohu.com/a/112496619_463989 再推薦一個相關知識的連結:https://www.cnblogs.com/handsomeBoys/p/6556336.html ★ 先說一個通俗的例子 考慮到證書體系的相關知識比較枯燥、晦澀。俺先拿一個

數字證書CA掃盲介紹

轉載:http://kb.cnblogs.com/page/194742/ ★ 先說一個通俗的例子   考慮到證書體系的相關知識比較枯燥、晦澀。俺先拿一個通俗的例子來說事兒。   ◇ 普通的介紹信   想必大夥兒都聽說過介紹信的例子吧?假設 A 公司的張三先生

數字簽名,數字證書CA認證等概念理解

ca 認證 https openssl 本文將介紹數字簽名,數字證書以及CA相關知識。 加密相關知識可見我的上一篇博文:http://watchmen.blog.51cto.com/6091957/1923426本文參考文獻引用鏈接:1、https://www.zhihu.com

對稱(DES/AES)與非對稱(RSA/SSL/數字證書)加密介紹實際應用

行數據 服務端 版本 報道 pass edi 得到 參數 crc 本文不對具體的算法做深入研究,只是講解各種安全算法的原理和使用場景。 一、數據校驗算法 數據校驗,是為保護數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。當接收方用同樣的算法再算一次校驗值,如

Https、OpenSSL自建CA證書簽發證書、nginx單向認證、雙向認證使用Java訪問

1.5 image echo create etc 保存 config openss ima 0.環境 安裝了nginx,安裝了openssl 1.配置和腳本 先創建一個demo目錄(位置自己選擇,我選擇建在nginx的目錄下): mkdir /etc/nginx/

Linux 部署CA數字證書服務

systemctl ati pass code 獨立 gui state 機構 rest CA數字證書服務CA Certificate Authority 數字證書授權中心被通信雙方信任的,獨立的第三方機構負責證書頒發,驗證,撤銷等管理PKI公鑰基礎設施一套標準的密鑰管理平

SECURITY 03: 郵件服務TLS/SSL 、 總結和答疑 、 CA數字證書服務

roo email tab cal hostname tcp6 std http let day03部署CA服務器郵件加密網站加密+++++++++++++++++++++++++++++部署CA服務器 (54) 機構名稱 tarenaa

系統安全之數據的加密和解密、CA介紹、SSL或TLS協議簡介握手過程

網絡運維 網絡通信需要安全 所謂的網絡通信就是進程與進程之間的通信 然而進程的通信一般可以分成兩類:1、同一主機之間的進程通信

https數字證書交換過程介紹

dig color 數字證書 信息 tar 一起 med www ron 文章轉自:https://www.2cto.com/kf/201804/739010.html,感謝原作者的辛苦整理,講解的很清楚,謝謝。 【https數字證書交換過程介紹】 註意:該問的背景用到了非

加密,認證疑難名詞總結----RSA, 公鑰,私鑰,CA數字簽名,數字證書

成功 digital 出現 直觀 證明 col 文件簽名 nat blog 在網絡和操作系統安全通信中經常涉及到這幾個名詞: RSA, 公鑰,私鑰,CA,數字簽名,數字證書。我找了很多資料,很少有把疑難點講全面的。但不講清楚這幾個,很難有一個清晰的認識和理解。我現在也嘗試這

和安全有關的那些事 非對稱加密 數字摘要 數字簽名 數字證書 SSL HTTPS其他

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

https登陸 數字證書 檢查 設計思路解決方法總結

在一些管理嚴格的部門需要使用數字證書進行登陸,此時需要專門的數字證書登陸程式碼才行。 下面就總結一下最近做的一個專案的情況,供大家參考。 一、https 登陸的思路 先不談網站的https配置問題,另文詳細說明。  為了減少網站程式碼的變化,一般網站都採用了,只有登

基於自簽名的X 509數字證書生成驗證

                基於自簽名的X.509數字證書生成及驗證數字證書用於標誌網路使用者身份,在Web應用中,數字證書的應用十分廣泛,如:安全電子郵件、訪問安全站點、安全電子事務處理和安全電子交易等。數字證書的格式一般採用X.509國際標準。目前,數字證書認證中心主要簽發安全電子郵件證書、個人和企業

數字簽名過程數字證書

數字簽名是什麼? 作者:David Youd 翻譯:阮一峰 原文網址:http://www.youdzone.com/signature.html 1. 鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。 2. 鮑勃把公鑰送給他的朋友們—-帕蒂、道

java安全之數字簽名證書

MD5/SHA的應用 l  訊息摘要是一種演算法:無論原始資料多長,訊息摘要的結果都是固定長度的;原始資料任意bit位的變化,都會導致訊息摘要的結果有很大的不同,且根據結果推算出原始資料的概率極低。訊息摘要可以看作原始資料的指紋,指紋不同則原始資料不同。 l  數字摘要與M

和安全有關的那些事(非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS其他)

本文原文連線:http://blog.csdn.net/bluishglc/article/details/7585965 對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對

數字證書、SSL、HTTPS在Nginx中的配置

一、什麼是 RSA、SSL、HTTPS RSA:它是非對稱加密演算法的一種,而且是最常用的一種。它的理論基礎是:計算兩個大質數的乘積非常簡單,而對該乘積進行因子分解就非常困難。而且          這兩個質數越大,對其乘積的分解就越困難。RSA生成的金鑰對有公鑰和私鑰之分,不過,貌似金鑰對中的任何一個當

https、SSL與數字證書介紹

在網際網路安全通訊方式上,目前用的最多的就是https配合ssl和數字證書來保證傳輸和認證安全了。本文追本溯源圍繞這個模式談一談。 名詞解釋 首先解釋一下上面的幾個名詞: https:在http(超文字傳輸協議)基礎上提出的一種安全的http協議,因此可以稱為安全的

基於開源CA系統ejbca community 6.3.1.1構建私有CA管理數字證書

最後更新於2017年01月24日 一、為什麼   為什麼寫這篇文章?ca是什麼?數字證書是什麼?ejbca又是什麼?   讓我們從http與https說起。http是超文字傳輸協議(HyperText Transfer Protocol)的縮寫,也是網際網路的基石,網際網路絕大部分資料傳輸都是基於htt