您好,登錄后才能下訂單哦!
如何理解X.509,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
很多開發者可能和我一樣覺得X.509這個詞很陌生,但其實我們經常和它打交道,屬于典型的“日用而不知”的東西。
那么X.509是什么呢?
X.509是一種數字證書的格式標準。
應用很廣泛,現在HTTPS依賴的SSL證書使用的就是使用的X.509格式。這也就是說,每當我們打開https開頭的網站都會用到它。
簡單地說,格式標準就像寫HTML文件時的規范:開頭聲明文檔類型,html
作為根標簽,元信息放在head
標簽中,頁面內容放在body
標簽中等等。
當然這個例子不是那么貼切,因為實際上不按照這個格式編寫的html文件瀏覽器也能解析出來。
更貼切的例子應該是JSON文件格式,規定了嵌套關系必須用大括號,數組必須用中括號,字符串必須用雙引號等等,如果違反了一條其中的規則,那么就無法被正確的解析。
這個標準的具體內容是什么呢?
X.509規定的格式大致如下:
版本號 序列號 簽名算法 頒發者 證書有效期 開始日期 終止日期 主題 主題公鑰信息 公鑰算法 主體公鑰 頒發者唯一身份信息(可選) 主題唯一身份信息(可選) 擴展信息(可選) 簽名
下圖是某網站的 X.509 證書信息
那么數字證書又是什么?
簡單的說,數字證書就是通過加密算法來制造的一個網絡“×××”,用來證明通信方的真實身份。
這個“×××”的制作過程也很有意思,并不是由一個機構統一發放,而是層層頒發。
比如 A 持有了可信證書,那么它頒發給的 B 的證書也是可信的, B 再頒發給 C 的證書也是可信的。
整體結構很像數據結構中的“樹”,其中 A 的證書為“根證書”,B 的為“中介證書”,C 的為“終端證書”。
而 A、B 都被稱作認證機構,簡稱 CA(Certificate authority)。
根證書 | 中介證書 | 終端證書
根證書:通常預先安裝在操作系統和瀏覽器中,是由大公司和政府聯合制作的(用戶也可以自己制作,但是會有安全風險),作為證書鏈的起點。
中介證書:持有中介證書的CA主要負責給終端頒發證書,這些終端證書既有收費的也有免費的,免費終端證書一般使用期限是1年。
終端證書:終端證書一般就是我們在瀏覽器上可以查看到的證書,通常用于具體網站服務中。這類證書不會再用作頒發新的證書。
每個證書都可以沿著樹往上追溯到根證書,從而形成一條信任鏈。
比如下面這種圖就是某網站證書的信任鏈信息。
關于 X.509 的內容就分享完了。
但是心中的疑惑驅使著我繼續探索,這證書靠譜么?
如果***偽造認證機構給***網站頒發證書呢?
證書采用的是一種非對稱加密機制來保證信息不被竊取和復制。
這里稍稍解釋下非對稱機密,先說說密碼學。
信息加密的需求其實一直都存在,從古×××始就使用各種技術來加密重要的信息,但是古代的加密安全程度都是基于加密方式的。
也就是說,別人如果知道了加密方式,那么就可以解密密文信息。
而現代的加密技術安全性在于密鑰的安全,也就是說加密方式(算法)是公開的,只要密鑰不被竊取或泄露,信息就是安全的。
雖然加密算法有很多種,但是大致上可以分為兩類:對稱加密和非對稱加密。
對稱加密的通信雙方都是用同一個密鑰進行加解密,而非對稱加密則要求使用不同的密鑰進行加密和解密。
再回到證書的頒發過程,現在很多云服務廠商都提供了申請數字證書的功能,它會像CA發起申請,CA收到申請之后,做了下面的事情:
使用加密算法生成公私鑰對。私鑰一般是以.key
為后綴名的文件,公鑰存儲于以.csr
結尾的文件中。
在.csr
文件中補充一些信息比如有效期限等,頒發者,并用自己的私鑰對證書進行簽名。這樣就生成符合X.509格式的證書。
符合X.509格式的證書有多種,這里以SSL證書為例。
常見的場景會是下面這樣:
客戶端,比如瀏覽器會向服務端發送請求,服務端為了證明自己的身份,會發送證書給對方。
瀏覽器讀取證書的數字簽名部分,用自身根證書列表中對應的公鑰證書對其進行解密。如果解密成功,并且證書哈希值與簽名內的哈希值匹配一致,可證明站點提供的證書確實是該CA根證書簽發的,否則給出風險提示。
驗證通過之后,使用證書中的公鑰對隨機數和對稱加密算法加密,發送給服務端,服務端用私鑰進行解密,獲得密鑰和加密算法。
服務端與瀏覽器后續通信將會使用新的對稱加密算法和隨機密鑰加密信息。
證書在整個流程起到了重要的作用,那么能不能通過竊取和偽造的方式來獲取通信內容呢?
竊取。首先證書當然是可以被竊取的,因為它是公開的,但是拿到了證書后也只能和服務端進行通信,不能用來竊取其它信息,至于證書的私鑰存儲在服務端,更加不可能隨意被竊取了。
偽造。如果有人偽造了一張網站證書,那么瀏覽器在向CA查詢證書信息的時候就會驗證失敗。
那這么說就是絕對安全了嗎?非也~
對于DNS劫持的情況還是無解的。比如瀏覽器訪問網站的時候給了一個假證書,然后向CA驗證證書的時候又訪問了一個假網站,證書就有可能被驗證通過。從而***可以作為中間方獲取并轉發雙方的數據。
SSL證書從生成到使用涉及到了三次加解密過程:
證書生成的時候利用私鑰簽名,驗證證書的時候利用公鑰解密。
確認證書有效后,利用證書中的公鑰進行加密,服務端利用私鑰解密。
雙方使用新生成的隨機密鑰進行數據加解密。
用一張結構圖表示下HTTPS和X.509的關系:
HTTPS / \ HTTP TLS/SSL / \ 通信內容 確認身份 對稱加密 SSL證書 —— X.509 格式,非對稱加密
關于如何理解X.509問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。