<address id="v5f1t"><meter id="v5f1t"><dfn id="v5f1t"></dfn></meter></address>

<nobr id="v5f1t"><i id="v5f1t"><em id="v5f1t"></em></i></nobr>
      <font id="v5f1t"></font>

    <font id="v5f1t"><ruby id="v5f1t"></ruby></font>

      <listing id="v5f1t"></listing>

        <dfn id="v5f1t"><ruby id="v5f1t"><form id="v5f1t"></form></ruby></dfn>

            <dfn id="v5f1t"></dfn>

            <progress id="v5f1t"><b id="v5f1t"><strike id="v5f1t"></strike></b></progress>

              <font id="v5f1t"></font>

                      您的連接不是私密連接 您的連接不是私密連接 qq瀏覽器

                      導讀現如今的Web,HTTPS早已經成為標配,公開的HTTP網站已經和Flash一樣,慢慢在消亡了。啟用HTTPS的核心是證書。不知道大家是否有留意,前幾年使用12306的時候,瀏覽器都會提示「您的鏈接不

                      現如今的Web,HTTPS早已經成為標配,公開的HTTP網站已經和Flash一樣,慢慢在消亡了。

                      啟用HTTPS的核心是證書。不知道大家是否有留意,前幾年使用12306的時候,瀏覽器都會提示「您的鏈接不是私密鏈接」,這其實就是因為12306的證書有問題。如果點擊「繼續前往」,打開12306網站,它會提示你下載安裝它提供的“根證書”。

                      圖片來源于網絡

                      那么,證書是什么?里面含有什么內容?瀏覽器為什么會不信任12306的證書?為什么下載12306提供的根證書就可以解決這個問題?根證書又是什么?

                      證書:公鑰和私鑰

                      我們先來簡單回顧一下TLS 和HTTPS。HTTPS全稱是HTTP Over TLS,也就是使用TLS進行HTTP通信。

                      TLS (Transport Layer Security) 是一個安全通信協議,用于建立一個安全通道來交換數據。

                      看名字可以知道這是一個傳輸層協議,因此應用層協議對它是沒有感知的,HTTP, FTP, SMTP都可以和TLS配合使用。

                      TLS創建安全鏈接的步驟如下:

                      • 雙方協商使用的協議版本,加密算法等細節
                      • 服務器發送證書給客戶端
                      • 客戶端校驗證書有效性
                      • 雙方根據握手的一些參數生成一個對稱秘鑰,此后所有的內容使用這個秘鑰來加密

                      我們先來看證書,證書是一個文件,里面含有目標網站的各種信息。例如網站的域名,證書的有效時間,簽發機構等,其中最重要的是這兩個:

                      • 用于生成對稱秘鑰的公鑰
                      • 由上級證書簽發的簽名

                      關于RSA的公鑰和私鑰記住一點就行:我們可以使用算法生成一對鑰匙,他們滿足一個性質:公鑰加密的私鑰可以解開,私鑰加密的公鑰可以解開。

                      證書,顧名思義,是用來證明自己身份的。因為發送證書的時候是明文的(這一步也沒法加密),所以證書內容是可以被中間設備篡改的。

                      那么要怎樣設計一套機制保證當我們訪問github.com的時候,收到的證書確實是github.com的證書,而不是某個中間設備隨意發來的證書?

                      解決辦法是采用「信任鏈」。

                      首先,有一批證書頒發機構(Certificate Authority,簡稱為CA),由他們生成秘鑰對,其中私鑰保存好,公鑰以證書的格式安裝在我們的操作系統中,這就是根證書。

                      我們的手機、電腦、電視機的操作系統中都預裝了CA的根證書,他們是所有信任構建的基石。當然,我們也可以自己下載任意的根證書進行安裝。

                      接下來,只要設計一個體系,能夠證明A證書簽發了B證書即可。這樣對于收到的任何一個證書,順藤摸瓜,只要最上面的根證書在系統中存在,即可證明該證書有效。

                      比如說,我們收到了服務器發過來的C證書,我們驗證了C是由B簽發的,然后又驗證了B是由A簽發的,而A在我們的系統中存在,那也就證明了C這個證書的有效性。

                      這其中,A是根證書,B是中間證書,C是葉證書(類似樹中的葉節點)。中間證書可以有很多個,信任的鏈條可以任意長,只要最終能到根證書即可。

                      得益于RSA的非對稱性質,驗證A是否簽發了B證書很簡單:

                      • 計算B的 hash 值(算法隨便,比如SHA1)
                      • 使用A的私鑰對該hash進行加密,加密以后的內容叫做「簽名(Signature)」
                      • 將該「簽名」附在B證書中

                      A使用自己的私鑰給B生成簽名的過程也就是「簽發證書」,當我們收到B證書時,首先使用A證書的公鑰(公鑰存儲在證書中解開簽名獲得hash)計算B的hash,如果兩個hash匹配,說明B確實是由 A 簽發的。

                      重復上面的過程,直到根證書,就可以驗證某個證書的有效性。

                      本文內容為原創,轉載請注明出處!

                      免責聲明:本文章由會員“金楠”發布如果文章侵權,請聯系我們處理,本站僅提供信息存儲空間服務如因作品內容、版權和其他問題請于本站聯系
                      <address id="v5f1t"><meter id="v5f1t"><dfn id="v5f1t"></dfn></meter></address>

                      <nobr id="v5f1t"><i id="v5f1t"><em id="v5f1t"></em></i></nobr>
                          <font id="v5f1t"></font>

                        <font id="v5f1t"><ruby id="v5f1t"></ruby></font>

                          <listing id="v5f1t"></listing>

                            <dfn id="v5f1t"><ruby id="v5f1t"><form id="v5f1t"></form></ruby></dfn>

                                <dfn id="v5f1t"></dfn>

                                <progress id="v5f1t"><b id="v5f1t"><strike id="v5f1t"></strike></b></progress>

                                  <font id="v5f1t"></font>

                                          国产成人h片视频在线观看