用戶想要與MySQL服務(wù)器建立一條安全連接時,常常依賴VPN隧道或SSH隧道。不過,獲得MySQL連接的另一個辦法是,啟用MySQL服務(wù)器上的SSL封裝器(SSL wrapper)。這每一種方法各有其優(yōu)缺點(diǎn)。比如說,在出現(xiàn)多條短時間MySQL連接的高度動態(tài)環(huán)境下,VPN或SSH隧道也許是比SSL更好的選擇,因?yàn)楹笳呓⒚織l連接時需要成本高昂的SSL握手計(jì)算。另一方面,如果是長時間運(yùn)行的MySQL連接比較少的那些應(yīng)用,基于SSL的加密可能很合理。由于MySQL服務(wù)器已經(jīng)內(nèi)置了SSL支持功能,你不需要實(shí)施VPN或SSH隧道之類單獨(dú)的安全層,這種隧道有其自己的維護(hù)開銷。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站改版維護(hù)等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)公司。
在MySQL服務(wù)器中實(shí)施SSL可以加密在服務(wù)器與客戶機(jī)之間來回傳輸?shù)乃袛?shù)據(jù),因而防止廣域網(wǎng)或數(shù)據(jù)中心里面可能出現(xiàn)的竊聽或數(shù)據(jù)嗅探行為。此外,SSL還通過SSL證書提供了身份驗(yàn)證機(jī)制,因而可以保護(hù)用戶,遠(yuǎn)離可能出現(xiàn)的網(wǎng)絡(luò)釣魚攻擊。
我們在本文中將介紹如何啟用MySQL服務(wù)器上的SSL。請注意:同樣過程適用于MariaDB服務(wù)器。
創(chuàng)建Server SSL證書和私鑰
我們必須為MySQL服務(wù)器創(chuàng)建SSL證書和私鑰,通過SSL連接到服務(wù)器時要用到它們。
首先,創(chuàng)建一個臨時的工作目錄,我們將把私鑰和證書文件放在該目錄下。
$ sudo mkdir ~/cert $ cd ~/cert
確保OpenSSL已安裝在運(yùn)行MySQL服務(wù)器的系統(tǒng)上。通常,所有Linux發(fā)行版在默認(rèn)情況下都安裝了OpenSSL。想檢查一下OpenSSL有沒有安裝,不妨使用下面這個命令。
$ openssl version OpenSSL 1.0.1f 6 Jan 2014
現(xiàn)在,繼續(xù)創(chuàng)建CA私鑰和證書。下面這些命令將創(chuàng)建ca-key.pem和ca-cert.pem。
$ openssl genrsa 2048 ca-key.pem $ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem ca-cert.pem
第二個命令會詢問你幾個問題。你在這些字段里填入什么并不重要。只管填好那些字段。
下一步是為服務(wù)器創(chuàng)建私鑰。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem server-req.pem
這個命令會再次詢問幾個問題,你可以填寫上一步中提供的相同答案。
下一步,使用下面這個命令,將服務(wù)器的私鑰導(dǎo)出成RSA類型的密鑰。
$ openssl rsa -in server-key.pem -out server-key.pem
最后,使用CA證書,創(chuàng)建服務(wù)器證書。
$ openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 server-cert.pem
配置MySQL服務(wù)器上的SSL
完成上述過程后,我們應(yīng)該有了CA證書、服務(wù)器的私鑰及其證書。下一步就是配置MySQL服務(wù)器,以便使用私鑰和證書。
在配置MySQL服務(wù)器之前,檢查一下SSL選項(xiàng)已被啟用還是被禁用。為此,登錄進(jìn)入到MySQL服務(wù)器,輸入下面這個查詢。
mysql SHOW GLOBAL VARIABLES LIKE 'have_%ssl';,
該查詢的結(jié)果會如同下圖。
請注意:“have_openssl”和“have_ssl”變量的默認(rèn)值是“被禁用”,如下所示。想啟用MySQL服務(wù)器中的SSL,繼續(xù)執(zhí)行下列步驟。
1. 將ca-cert.pem、server-cert.pem和server-key.pem拷貝或移動到/etc目錄下。
$ sudo mkdir /etc/mysql-ssl $ sudo cp ca-cert.pem server-cert.pem server-key.pem /etc/mysql-ssl
2. 使用文本編輯工具,打開服務(wù)器的my點(diǎn)吸煙 f配置文件。添加或去掉注釋[mysqld]部分中類似下面內(nèi)容的幾行。這些應(yīng)該指向你放在/etc/mysql-ssl中的私鑰和證書。
[mysqld] ssl-ca=/etc/mysql-ssl/ca-cert.pem ssl-cert=/etc/mysql-ssl/server-cert.pem ssl-key=/etc/mysql-ssl/server-key.pem
3. 在my點(diǎn)吸煙 f中,還要找到“bind-address = 127.0.0.1”,并將它改成:
bind-address = *
那樣一來,你就可以從另一個主機(jī)連接到MySQL服務(wù)器了。
4. 重啟MySQL服務(wù)。
$ sudo service mysql restart 或 $ sudo systemctl restart mysql 或 $ sudo /etc/init.d/mysql restart
你只要查看MySQL錯誤日志文件(比如/var/log/mysql/mysql.log),就可以檢查SSL配置有沒有問題。要是錯誤日志中沒有警告或錯誤(就像下面的屏幕截圖),這表明SSL配置沒有問題。
驗(yàn)證SSL配置的另一個辦法就是,在MySQL服務(wù)器里面再次運(yùn)行“have_%ssl”查詢。
mysql SHOW GLOBAL VARIABLES LIKE 'have_%ssl';
創(chuàng)建擁有SSL權(quán)限的用戶
服務(wù)器端的SSL配置完成后,下一步就是創(chuàng)建有權(quán)通過SSL訪問MySQL服務(wù)器的用戶。為此,登錄進(jìn)入到MySQL服務(wù)器,輸入下面內(nèi)容:
mysql GRANT ALL PRIVILEGES ON *.* TO ‘ssluser’@’%’ IDENTIFIED BY ‘dingdong’ REQUIRE SSL; mysql FLUSH PRIVILEGES;
把“ssluser”(用戶名)和“dingdong”(密碼)換成你自己的用戶名和密碼。
如果你想分配一個特定的IP地址(比如192.168.2.8),以便用戶從該地址來訪問服務(wù)器,那就改而使用下列查詢。
mysql GRANT ALL PRIVILEGES ON *.* TO ‘ssluser’@’192.168.2.8’ IDENTIFIED BY 'dingdong' REQUIRE SSL; mysql FLUSH PRIVILEGES;
配置MySQL客戶機(jī)上的SSL
鑒于MySQL服務(wù)器端配置已完成,不妨將目光轉(zhuǎn)移到客戶機(jī)端。就MySQL客戶機(jī)而言,我們就需要基于服務(wù)器的CA私鑰和證書,創(chuàng)建新的私鑰和證書。
在服務(wù)器的CA私鑰和證書駐留于其中的MySQL服務(wù)器主機(jī)上運(yùn)行下列命令。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem client-req.pem
類似服務(wù)器端配置,上述命令會詢問幾個問題。只管填好字段,就像前面所做的那樣。
我們還需要將創(chuàng)建的客戶機(jī)私鑰轉(zhuǎn)換成RSA類型,如下所示。
$ openssl rsa -in client-key.pem -out client-key.pem,
最后,我們需要使用服務(wù)器的CA私鑰和證書,創(chuàng)建客戶機(jī)證書。
$ openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 client-cert.pem
現(xiàn)在,將ca-cert.pem、client-cert.pem和client-key.pem文件轉(zhuǎn)移到你想要運(yùn)行MySQL客戶機(jī)的任何主機(jī)上。
在客戶機(jī)主機(jī)上,使用下面這個命令,通過SSL連接到MySQL服務(wù)器。
$ mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h -u ssluser -p
在輸入ssluser的密碼后,你會看到如往常那樣的MySQL提示符。
想檢查一下你有沒有使用SSL,在提示符處輸入狀態(tài)命令。
mysql status;
如果你已通過SSL連接上去,它會在SSL字段顯示密碼信息,如下所示。
密鑰是一種加密技術(shù),不像有的加密技術(shù)中采用相同的密鑰加密、解密數(shù)據(jù),公共密鑰加密技術(shù)采用一對匹配的密鑰進(jìn)行加密、解密。每把密鑰執(zhí)行一種對數(shù)據(jù)的單向處理,每把的功能恰恰與另一把相反,一把用于加密時,則另一把就用于解密。公共密鑰是由其主人加以公開的,而私人密鑰必須保密存放。為發(fā)送一份保密報(bào)文,發(fā)送者必須使用接收者的公共密鑰對數(shù)據(jù)進(jìn)行加密,一旦加密,只有接收方用其私人密鑰才能加以解密。相反地,用戶也能用自己私人密鑰對數(shù)據(jù)加以處理。換句話說,密鑰對的工作是可以任選方向的。這提供了"數(shù)字簽名"的基礎(chǔ),如果要一個用戶用自己的私人密鑰對數(shù)據(jù)進(jìn)行了處理,別人可以用他提供的公共密鑰對數(shù)據(jù)加以處理。由于僅僅擁有者本人知道私人密鑰,這種被處理過的報(bào)文就形成了一種電子簽名----一種別人無法產(chǎn)生的文件。數(shù)字證書中包含了公共密鑰信息,從而確認(rèn)了擁有密鑰對的用戶的身份。
mysql注冊碼可用的有:NAVL-EHNC-7N7P-W6GM? , NAVM-5ZCW-5PER-KPFT,NAVI-4U46-HW4V-LIET,mysql注冊的具體操作步驟如下:
1、下載安裝mysql,可到mysql官網(wǎng)下載。下載后直接安裝,一直下一步即可。
2、安裝完成后即可打開軟件。
3、如果無注冊碼的話,只能免費(fèi)試用30天,一旦到期后,將無法使用。
4、點(diǎn)擊注冊,在注冊頁面選擇第三行注冊碼一欄,填寫注冊碼:NAVH-WK6A-DMVK-DKW3。
5、或者填寫這個注冊碼:NAVI-4U46-HW4V-LIET也可,填完注冊碼,點(diǎn)擊確定即可。。