互連網安全機制及OpenSSL自建CA

來源:互聯網
上載者:User

標籤:openssl   互連網安全   

   網路誕生的早期,能夠接入網路的主機非常少,在當時基本上沒有什麼網路安全的概念,後來隨著接入互連網的主機越來越多,之前的網路接入環境也越來越不適應後來網路的發展,俗話說“林子大了什麼鳥都有”所以網路安全也越來越顯得尤為重要,接下來這篇博文我們就淺談一下網路安全的概念。

   一:互連網安全的幾大重要特徵

       網路安全幾大重要標準:資料保密性;資料完整性;不可否認性。想要實現資料保密性需要對傳輸過程進行加密。要想讓資料沒有被非法授權,侵入,修改等破環行為,保護資料的完整性,需要對資料進行身份認證,而在實現這一系列的安全過程需要眾多密碼演算法和協議。

   二:密碼演算法和協議

       對稱式加密:加密和解密使用同一密碼。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/A6/wKiom1PboGLQ-2Z2AADTm7n44c8679.jpg" title="對稱式加密.png" alt="wKiom1PboGLQ-2Z2AADTm7n44c8679.jpg" />

      非對稱式加密:加密和解密使用不同的密鑰,分為公開金鑰和私密金鑰,公開金鑰是從私密金鑰裡提取出來,公開金鑰可以公開給其他人,私密金鑰只能自己使用,用公開金鑰加密就只能用對應的私密金鑰解密,相對的用私密金鑰加密就只能用對應的公開金鑰解密。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/A7/wKiom1PboivTq-v3AAC6IlroZas649.jpg" title="非對稱式加密.png" alt="wKiom1PboivTq-v3AAC6IlroZas649.jpg" />

      單向加密:提取資料的特徵碼,特徵碼具有定長輸出,和雪崩效應兩個特性,一個微小的資料改動就會使提出來的特徵碼產生巨大的變化,這種特性對驗證資料的完整性具有重要的作用。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/A7/wKioL1PbpD3DuOt0AADdfwnRvrw404.jpg" title="單向加密.png" alt="wKioL1PbpD3DuOt0AADdfwnRvrw404.jpg" />


     現在互連網的安全傳輸過程就是有上面的幾種密碼編譯演算法實現的,下面就然我們淺析下互連網加密傳輸的過程。:現在有兩個人A和B。A現在想要和B進行通訊,那A怎樣讓B知道自己是A且傳過來資料沒有被修改過呢?。

      要想實現這個過程,A需用“單向加密”演算法提取所要傳輸資料的特徵碼,然後A在用自己的私密金鑰對所提出來的特徵碼進行“非對稱式加密”。此時把加密後的資料(假設為資料C),傳輸給B。B呢在利用A 的公開金鑰(A的公開金鑰每個人都可以有)進行解密,能解密那麼A的身份就能獲得驗證,且解密出來的資料是A從傳輸資料裡提出來的特徵碼(A是對資料的特徵碼進行加的密),然後B再用“單向加密”(相同演算法)提取資料的特徵碼,如果特徵碼相同則證明資料了完整性。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/C5/wKioL1PcUYDAUcg3AAC56Xai614078.jpg" title="加密.png" alt="wKioL1PcUYDAUcg3AAC56Xai614078.jpg" />

    :那A傳給B的資料怎樣只有B才能看到呢?

    A先用對稱演算法得出一段密碼,在用這段密碼把上面得出的資料C整體進行加密得出另一段密碼,此時A在用B的公開金鑰對這段密碼進行加密得出結果放到資料後面一併發給B,如果B能用自己的私密金鑰解開資料得到密碼,說明是發給B的資料,此時B獲得了A加密時用的密碼,然後B在用相同的演算法和獲得密碼得到資料C,剩下的過程就是重複第一問的過程了,這樣整個安全傳輸過程就完成了,B也能解開A所發的資料(說明只有B才能解開資料的安全行得到驗證),B也能驗證A的身份(用A的公開金鑰進行解密,身份性的到驗證),B也能確保資料的完整(提取特徵碼,資料的完整性得到保證)。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/C5/wKioL1PcUwuxn2qJAAFcopWl4SA254.jpg" title="加密2.png" alt="wKioL1PcUwuxn2qJAAFcopWl4SA254.jpg" />

   問:有人會疑惑這樣雖然能解決安全傳輸的一些問題,但這個過程的一個重要參與者公開金鑰怎樣確保他是合法的呢?

    關於公開金鑰的合法性我們只有通過有道德的機構來簽發,這種機構我們都預設他是有道德的有公信力的,我們都認可的。當然你如果只在自己公司內部實現CA認證認證,讓老闆發個文在公司內部自己建一個CA簽證服務也是可以的。

   問:CA的合法性如何進行驗證?

     先用CA的公開金鑰對CA進行解密,能夠解密說明是CA頒發的,解密出來的是一段特徵碼,使用者再用同樣的演算法去計算CA的特徵碼,並比較CA的特徵碼是否相同如果相同表明CA沒有被修改過。還要驗證下CA的認證是否到期,是否吊銷等。

     總結一下:如果想保證自己的身份性,就用自己的私密金鑰進行加密,如果想要保證資料的安全性就用對方的公開金鑰進行加密。

   三:SSL&TSL

    上面簡單介紹了互連網安全傳輸的一些機制,下面我們來瞭解下一種開源的安全傳輸通訊協定SSL&TSL(Open Secure Socket Layer)。

     SSL(Secure Socket Layer):安全套接層是一種安全性通訊協定,目的是為互連網通訊,提供安全及資料完整性保障。在網景公司(Netscape)推出首版Web瀏覽器的同時提出SSL,IETF將SSL進行標準化,1999年公布了TLS標準檔案。

      

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/C9/wKiom1Pch8mxH9UbAAC3Z3j_-D0129.jpg" title="SSL.png" alt="wKiom1Pch8mxH9UbAAC3Z3j_-D0129.jpg" />

    傳輸過程:1)client發送一個會話請求並隨機產生一串數字產生工作階段金鑰,發送給server端。


              2)server端發出響應訊號,與用戶端協商加密版本,如果瀏覽器與伺服器支援的版本不                   一致,伺服器關閉加密通訊,一個伺服器產生的隨機數,稍後用於產生"對話密                      鑰",確認使用的加密方法,比如RSA公開金鑰加密,伺服器憑證。


                3)當雙方知道了串連參數,用戶端與伺服器交換認證(依靠被選擇的公開金鑰系統)。這些                  認證通常基於X.509,不過也有支援OpenPGP為基礎的認證。


              4)伺服器請求用戶端公開金鑰。用戶端有認證即雙向身份認證,沒認證時隨機產生公開金鑰。


              5)用戶端與伺服器通過公開金鑰保密協商共同的主私密金鑰(雙方隨機協商),這通過精心謹慎                  設計的偽隨機數功能實現,所有其他關鍵資料的加密均使用這個“主要金鑰”。


     TLS:TLS利用密鑰演算法在互連網上提供端點身份認證與通訊保密,其基礎是公開金鑰基礎設施(public key infrastructure,PKI)。不過在實現的典型例子中,只有網路服務者被可靠身份是經過驗證,而其用戶端則不一定。這是因為公開金鑰基礎設施普遍商業運營,電子簽署憑證通常需要付費購。---wikipedia



   四:OpenSSL

      1)OpenSSL定義

         OpenSSL是套開放原始碼的軟體庫包,實現了SSL與TLS協議。其主要庫是以C語言所寫成,實現了基本的加密功能。OpenSSL可以運行在絕大多數類Unix作業系統上(包括Solaris,Linux,Mac OS X與各種版本的開放原始碼BSD作業系統),OpenVMS與Microsoft Windows。它也提供了一個移植版本,可以在IBM i(OS/200)上運作。

        此軟體是以Eric Young以及Tim Hudson兩人所寫的SSLeay為基礎所發展的,SSLeay隨著兩人前往RSA公司任職而停止開發。   ---wikipedia

     2)openssl建立私人CA伺服器

        openssl建立私人CA需要先自己產生密鑰,自己進行自簽認證。

  • 產生密鑰


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C8/wKiom1PcZsbDRFkZAAEHc_bysC4534.jpg" title="1.1產生CA密鑰.png" alt="wKiom1PcZsbDRFkZAAEHc_bysC4534.jpg" />

  •   自簽認證


650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/C8/wKiom1PcaPby3GnmAAOVTMa86ZQ113.jpg" title="2.2產生密鑰.png" alt="wKiom1PcaPby3GnmAAOVTMa86ZQ113.jpg" />

req: 產生認證簽署請求

-news: 新請求

-key /path/to/keyfile: 指定私密金鑰檔案

-out /path/to/somefile: 

-x509: 產生自簽署認證

-days n: 有效天數

  • CA的初始化

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/C9/wKioL1Pca0SiruToAAECQH4qxkg620.jpg" title="CA初始化.png" alt="wKioL1Pca0SiruToAAECQH4qxkg620.jpg" />


     3)節點申請認證

  • 節點產生自己的金鑰組

   (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C8/wKiom1Pca3zhsnMRAAE-R5put68534.jpg" title="3.3產生節點的密鑰.png" alt="wKiom1Pca3zhsnMRAAE-R5put68534.jpg" />

  • 產生認證簽署請求

openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C8/wKiom1PcbMnxbt8zAAO36x9x30o641.jpg" title="4.4節點簽署認證請求.png" alt="wKiom1PcbMnxbt8zAAO36x9x30o641.jpg" />

  • 簽署認證

   因為本次實驗CA 服務和節點在同一主機所以沒有進行申請簽署認證移送。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C9/wKioL1Pcb9nBwXqkAAJiinsYcTU110.jpg" title="5.5進行認證簽署.png" alt="wKioL1Pcb9nBwXqkAAJiinsYcTU110.jpg" />

  • 把認證交給簽送者(是把認證放到windows的效果)

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/C9/wKioL1PccG2CSW2FAAIgePZMDaY165.jpg" title="認證.png" alt="wKioL1PccG2CSW2FAAIgePZMDaY165.jpg" />

  • 給其他節點進行簽署需要把簽署認證交給簽署伺服器

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/C9/wKioL1PcdPLhBRU4AADgg7NrODU637.jpg" title="1.png" alt="wKioL1PcdPLhBRU4AADgg7NrODU637.jpg" />


  • 進行簽署

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C8/wKiom1PccyrzvAoWAAGIVE8jJ9I892.jpg" title="6.6.6給其他主機簽署.png" alt="wKiom1PccyrzvAoWAAGIVE8jJ9I892.jpg" />

好了這樣兩個認證就簽好了

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C8/wKiom1PcdAOAZTQvAADXc5McqFM232.jpg" title="認證2.png" alt="wKiom1PcdAOAZTQvAADXc5McqFM232.jpg" />


   4)如何吊銷認證

  • 擷取認證serial

   openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subjectserial=01

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/43/C8/wKiom1PcdWvSXs56AAC_xjFE56c418.jpg" title="7.7吊銷認證.png" alt="wKiom1PcdWvSXs56AAC_xjFE56c418.jpg" />

  

  • 根據節點提交的serial和subject資訊來驗正與index.txt檔案中的資訊是否一致

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C9/wKioL1PcdueSnoRjAAFjeWnvxPo171.jpg" title="吊銷驗證.png" alt="wKioL1PcdueSnoRjAAFjeWnvxPo171.jpg" />


  • 吊銷認證

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/43/C9/wKiom1PceBuAv0xFAABjIJckRDY636.jpg" title="8吊銷認證.png" alt="wKiom1PceBuAv0xFAABjIJckRDY636.jpg" />

  • 查看吊銷後結果

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/43/C9/wKioL1PceXyyz1YkAADZ99i5pFo364.jpg" title="9查看吊銷後狀態.png" alt="wKioL1PceXyyz1YkAADZ99i5pFo364.jpg" />


  結束:現在由於接入互連網的主機越來越多,再加上移動互聯的到來,互連網安全顯得越來越重要,雖然互連網設計者們在不斷和破壞者對抗,以保證我們的上網環境但我們自身也要養成一個良好的上網習慣,儘可能保護好自己隱私資訊。OpenSSL心臟出血漏洞希望不要再出現。












      


本文出自 “slayer” 部落格,請務必保留此出處http://slayer.blog.51cto.com/4845839/1534131

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.