提示:加密連接可提高數據的安全性,但會降低性能。要進行加密連接,必須滿足以下要求.
加密連接可提高數據的安全性,但會降低性能。要進行加密連接,必須滿足以下要求:
user權限表裡要有相關的SSL數據列。如果安裝的MySQL服務器是4.0.0版的,user權限表已包含相關的SSL數據列,否則,我們也可用MySQL_fix_privilege_tables腳本升級權限表。
服務器和客戶程序都已經編譯有OpenSSL支持。首先要安裝openssl,在編譯時MySQL服務器時加--with-vio和--with-openssl選項加上openssl支持。可用以下語句查詢服務器是否支持SSL:
MySQL> show variables like 'have_openssl';
在啟動服務器時用有關選項指明證書文件和密鑰文件的位置。在建立加密連接前,要准備三個文件,一個CA證書,是由可信賴第三方出具的證書,用來驗證客戶端和服務器端提供的證書。CA證書可向商業機構購買,也可自行生成。第二個文件是證書文件,用於在連接時向對方證明自已身份的文件。第三個文件是密鑰文件,用來對在加密連接上傳輸數據的加密和解密。MySQL服務器端的證書文件和密鑰文件必須首先安裝,在sampdb發行版本的ssl目錄裡有幾個供參考的樣本文件:ca-cert.pem(CA證書),server-cert.pem(服務器證書),server-key.pem(服務器公共密鑰)。把這幾個文件拷貝到服務器的數據目錄中,再在選項文件裡加上以下內容:
[MySQLd]
ssl-ca=/usr/local/MySQL/data/ca-cert.pem
ssl-cert=/usr/local/MySQL/data/server-cert.pem
ssl-key=/usr/local/MySQL/data/server-key.pem
重啟服務器,使配置生效。
要想讓某個客戶程序建立加密連接,必須在調用這個客戶程序時用有關選項告訴它在哪裡能找到其證書文件和密鑰文件。在sampdb發行版的ssl目錄中提供了client-cert.pem(客戶證書文件),clIEnt-key.pem(客戶密鑰文件),CA證書與服務器使用同樣的ca-cert.pem。把他們拷貝到個人目錄下,並在.my.cnf選項文件中指出文件位置,如:
[MySQL]
ssl-ca=/home/MySQL/ca-cert.pem
ssl-cert=/home/MySQL/clIEnt-cert.pem
ssl-key=/home/MySQL/clIEnt-key.pem
配置完成後,調用mysql程序運行\s或SHOW STATUS LIKE 'SSL%'命令,如果看到SSL:的信息行就說明是加密連接了。如果把SSL相關的配置寫進選項文件,則默認是加密連接的。也可用MySQL程序的--skip-ssl選項取消加密連接。如果用命令行方式啟用加密連接可以這樣寫:
% MySQL --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=clIEnt-key.pem
可用GRANT語句的REQUIRE SSL選項來強制用戶使用加密連接。
使用sampdb發行版的證書可以建立一個加密連接,但由於該文件已公開,所以安全性不好,我們可以在測試成功後自行建立證書或購買商業證書,以提高安全性。如何自行建立SSL證書的文檔在sampdb發行版的ssl/README文件裡有說明。