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

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

2016-09-21
透過網路存取資料庫主機時,若沒有經過特別保護處理,重要資料很可能被中途截取,若改用SSL安全傳輸的方式來連結資料庫,將能有效地避免在傳輸過程中發生資料外洩的事故。
介紹過相關的密碼系統後,接下來說明如何利用開源碼社群中最有名的加解密程式庫OpenSSL進行密碼的實作。

什麼是OpenSSL

OpenSSL是一套開放原始碼的軟體安全程式庫,於1998年釋出第一版以來,經過多年的修正,至今已成為一套相當穩定的安全程式庫。

應用程式可以使用OpenSSL所提供的加解密函式來進行安全通訊,以避免相關的機敏資料被竊聽。一般來說,OpenSSL可應用在任何一種的網路服務,最常見的是網站伺服器的應用,也就是SSL網站。而在本文中,將利用OpenSSL的加解密功能來對MySQL通訊進行加密以滿足安全傳輸的要求。

安裝OpenSSL很簡單,只要執行下列指令即可完成安裝:


時至今日,如果是使用開源碼的網站解決方案,其中的SSL安全網站伺服器,絕大部分均是使用OpenSSL來實作完成。

接著,說明OpenSSL的使用(在此使用的版本為1.0.1e),OpenSSL語法如下:


其中,[標準命令]代表設定密碼演算法,產生相關的金鑰,常見的密碼演算法如表2所示。而[參數]是依各個標準命令的不同,而有不同的參數,通常是用來設定金鑰的一些常用屬性。

表2 常見的密碼演算法

緊接著,以OpenSSL來展示加解密的過程。

對稱式密碼實作

這裡將以DES演算法為例,如圖3所示,相關操作說明如下:


▲圖3 採用DES演算法。

(1)產生一個檔名是「test.txt」、內容為「test」的測試檔案。

(2)針對此檔以DES演算法加密(其中參數-e為encrypt加密,-in則是指定要加密的檔案),並將加密後的密文儲存至檔名為「crytest.txt」的檔案中。在加密過程中,會要求使用者設定一組密碼以供解密之用。加密完成後,執行「cat encrytest.txt」指令查看,可發現其內容已是加密過後的資訊。

(3)針對以DES演算法加密後檔案加以解密(參數為-d),並將解密後的資料,儲存至檔名為「decrytest.txt」的檔案中。同樣地,在解密的過程中必須輸入相同的密碼,方可解密。

(4)可以「cat decrytest.txt」指令來驗證解密後的檔案內容是否已正常完整地解密成功。

接下來,再以OpenSSL來實作非對稱式密碼(以RSA演算法為例)的加解密過程,如圖4所示:


▲圖4 以OpenSSL來實作非對稱式密碼。

(1)利用RSA演算法(參數為genrsa)產生一把長度為2048位元,檔名為「private.pem」的私鑰。

(2)利用此私鑰產生一把相對應的公鑰(檔名為public.pem),以「ls *.pem」指令查看,會產生兩個金鑰檔案。

(3)利用公鑰(-inkey public.pem)來對檔名為「testrsa.txt」的檔案加密(-encrypt)並將加密過後的檔案儲存成「encrytestrsa.txt」。

(4)利用相對應的私鑰(-inkey public.pem)針對 encrytestrsa.txt加以解密(-decrypt),並將解密過後的檔案放置於「decrytestrsa.txt」。最後再利用「cat decrytestrsa.txt」指令查看是否已正常地解密。

安裝支援SSL功能MySQL

為了相容性的考慮,在此選擇較早的MySQL 5.1.71版本。

先到MySQL官方網站下載原始碼,接著依下列指令(#為註解)來編譯一個含有SSL功能的MySQL程式:


在啟動成功之後,即可以使用如下指令來登入資料庫:


接著,使用「show variables like '%ssl%';」指令來做測試,確認是否有支援SSL功能,如圖5所示。由於尚未設定SSL相關的組態,所以在此時所顯現的組態設定會是「DISABLED」。


▲圖5 確認是否有支援SSL功能。

在安裝成功MySQL資料庫後,接下來即可產生所需要的憑證(格式為X.509),接著先說明X.509憑證的格式。


追蹤我們Featrue us

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

我知道了!