OpenSSL MySQL 機敏資料 密碼系統 資料庫 加密

幫MySQL加上安全傳輸 走SSL連線資料庫才放心

2016-09-21
透過網路存取資料庫主機時,若沒有經過特別保護處理,重要資料很可能被中途截取,若改用SSL安全傳輸的方式來連結資料庫,將能有效地避免在傳輸過程中發生資料外洩的事故。
了解X.509數位憑證標準

X.509最早開始於1998年,是由國際電信聯盟(ITU-T)組織制定的一種數位憑證標準,而此標準最主要的目的在於,驗證已簽發的憑證上擁有者的身分。其主要的認證架構為一階層式的架構,如圖6所示。


▲圖6 X.509數位憑證標準。

其中CA指的是官方簽證單位,由CA來審核申請者的身分,在審核成功後,即會發給一張合格的數位憑證,藉以證明申請者的身分。因此,如果是使用者自行簽署的數位憑證,在進行安全連線時,由於在數位憑證的CA(簽證單位)中並非官方簽證單位,所以往往會有警告訊息,告知此憑證並非有效。

基本上,數位憑證中的架構如表3所示。

表3 數位憑證的架構說明

如圖7所示,其實可以利用Google Chrome瀏覽器中的憑證管理功能來查看憑證內容。


▲圖7 在Chrome瀏覽器內查看憑證內容。

X.509常見的憑證格式(依副檔名來區分),如表4所示。

表4 X.509常見的憑證格式

在了解X.509的基本格式後,接著就來建立所需要的憑證,本文所需要的憑證如表5所示。

表5 本文實作所需的憑證名稱及說明

首先,使用如下的指令來產生CA憑證(伺服器證書):


在產生憑證的過程中會詢問一些問題,基本上採用預設的設定即可,但要特別的注意的是,在詢問Common Name的時候(圖8)必須與稍後在產生伺服器及用戶端憑證時所詢問的(Common Name)設定成不一樣(在OpenSSL官方網站也特別提到這點),否則在進行遠端以SSL連線資料庫時,會出現「SSL connection error」的錯誤訊息。


▲圖8 設定Common Name時必須特別留意。

就筆者測試結果發現,如果憑證中的Common Name都設定一樣,的確會出現相關的「SSL connection error」錯誤訊息。

在產生完伺服器證書後,接著產生MySQL伺服器端所需要的憑證。以RSA演算法產生一個長度為2048位元、有效期為360天的伺服器私鑰(檔名為server-key.pem以及憑證要求檔server-req.pem),此金鑰為無密碼保護:


產生伺服器憑證後,再來產生用戶端所需要憑證,使用指令如下所示:


產生所有憑證之後,最後以下列的指令驗證憑證是否正確:


如果出現如圖9所示的結果(這裡將相關憑證置於「/usr/local/mysql5/etc/」目錄),就表示憑證建立正確且成功。


▲圖9 憑證建立正確且成功。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!