日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何為MySQL服務(wù)器和客戶機(jī)啟用SSL?

用戶想要與MySQL服務(wù)器建立一條安全連接時(shí),常常依賴VPN隧道或SSH隧道。不過(guò),獲得MySQL連接的另一個(gè)辦法是,啟用MySQL服務(wù)器上的SSL封裝器(SSL wrapper)。這每一種方法各有其優(yōu)缺點(diǎn)。比如說(shuō),在出現(xiàn)多條短時(shí)間MySQL連接的高度動(dòng)態(tài)環(huán)境下,VPN或SSH隧道也許是比SSL更好的選擇,因?yàn)楹笳呓⒚織l連接時(shí)需要成本高昂的SSL握手計(jì)算。另一方面,如果是長(zhǎng)時(shí)間運(yùn)行的MySQL連接比較少的那些應(yīng)用,基于SSL的加密可能很合理。由于MySQL服務(wù)器已經(jīng)內(nèi)置了SSL支持功能,你不需要實(shí)施VPN或SSH隧道之類單獨(dú)的安全層,這種隧道有其自己的維護(hù)開(kāi)銷。

在MySQL服務(wù)器中實(shí)施SSL可以加密在服務(wù)器與客戶機(jī)之間來(lái)回傳輸?shù)乃袛?shù)據(jù),因而防止廣域網(wǎng)或數(shù)據(jù)中心里面可能出現(xiàn)的竊聽(tīng)或數(shù)據(jù)嗅探行為。此外,SSL還通過(guò)SSL證書(shū)提供了身份驗(yàn)證機(jī)制,因而可以保護(hù)用戶,遠(yuǎn)離可能出現(xiàn)的網(wǎng)絡(luò)釣魚(yú)攻擊。

我們?cè)诒疚闹袑⒔榻B如何啟用MySQL服務(wù)器上的SSL。請(qǐng)注意:同樣過(guò)程適用于MariaDB服務(wù)器。

創(chuàng)建Server SSL證書(shū)和私鑰

我們必須為MySQL服務(wù)器創(chuàng)建SSL證書(shū)和私鑰,通過(guò)SSL連接到服務(wù)器時(shí)要用到它們。

首先,創(chuàng)建一個(gè)臨時(shí)的工作目錄,我們將把私鑰和證書(shū)文件放在該目錄下。

$ sudo mkdir ~/cert
$ cd ~/cert

確保OpenSSL已安裝在運(yùn)行MySQL服務(wù)器的系統(tǒng)上。通常,所有Linux發(fā)行版在默認(rèn)情況下都安裝了OpenSSL。想檢查一下OpenSSL有沒(méi)有安裝,不妨使用下面這個(gè)命令。

$ openssl version
OpenSSL 1.0.1f 6 Jan 2014

現(xiàn)在,繼續(xù)創(chuàng)建CA私鑰和證書(shū)。下面這些命令將創(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

第二個(gè)命令會(huì)詢問(wèn)你幾個(gè)問(wèn)題。你在這些字段里填入什么并不重要。只管填好那些字段。

下一步是為服務(wù)器創(chuàng)建私鑰。

$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem

這個(gè)命令會(huì)再次詢問(wèn)幾個(gè)問(wèn)題,你可以填寫(xiě)上一步中提供的相同答案。

下一步,使用下面這個(gè)命令,將服務(wù)器的私鑰導(dǎo)出成RSA類型的密鑰。

$ openssl rsa -in server-key.pem -out server-key.pem

最后,使用CA證書(shū),創(chuàng)建服務(wù)器證書(shū)。

$ 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

完成上述過(guò)程后,我們應(yīng)該有了CA證書(shū)、服務(wù)器的私鑰及其證書(shū)。下一步就是配置MySQL服務(wù)器,以便使用私鑰和證書(shū)。

在配置MySQL服務(wù)器之前,檢查一下SSL選項(xiàng)已被啟用還是被禁用。為此,登錄進(jìn)入到MySQL服務(wù)器,輸入下面這個(gè)查詢。

mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';

該查詢的結(jié)果會(huì)如同下圖。

請(qǐng)注意:“have_openssl”和“have_ssl”變量的默認(rèn)值是“被禁用”,如下所示。想啟用MySQL服務(wù)器中的SSL,繼續(xù)執(zhí)行下列步驟。

1. 將ca-cert.pem、server-cert.pem和server-key.pem拷貝或移動(dòng)到/etc目錄下。

$ sudo mkdir /etc/mysql-ssl
$ sudo cp ca-cert.pem server-cert.pem server-key.pem /etc/mysql-ssl

2. 使用文本編輯工具,打開(kāi)服務(wù)器的my.cnf配置文件。添加或去掉注釋[mysqld]部分中類似下面內(nèi)容的幾行。這些應(yīng)該指向你放在/etc/mysql-ssl中的私鑰和證書(shū)。

[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.cnf中,還要找到“bind-address = 127.0.0.1”,并將它改成:

bind-address = *

那樣一來(lái),你就可以從另一個(gè)主機(jī)連接到MySQL服務(wù)器了。

4. 重啟MySQL服務(wù)。

$ sudo service mysql restart
或
$ sudo systemctl restart mysql
或
$ sudo /etc/init.d/mysql restart

你只要查看MySQL錯(cuò)誤日志文件(比如/var/log/mysql/mysql.log),就可以檢查SSL配置有沒(méi)有問(wèn)題。要是錯(cuò)誤日志中沒(méi)有警告或錯(cuò)誤(就像下面的屏幕截圖),這表明SSL配置沒(méi)有問(wèn)題。

驗(yàn)證SSL配置的另一個(gè)辦法就是,在MySQL服務(wù)器里面再次運(yùn)行“have_%ssl”查詢。

mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';

創(chuàng)建擁有SSL權(quán)限的用戶

服務(wù)器端的SSL配置完成后,下一步就是創(chuàng)建有權(quán)通過(guò)SSL訪問(wèn)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”(密碼)換成你自己的用戶名和密碼。

如果你想分配一個(gè)特定的IP地址(比如192.168.2.8),以便用戶從該地址來(lái)訪問(wèn)服務(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私鑰和證書(shū),創(chuàng)建新的私鑰和證書(shū)。

在服務(wù)器的CA私鑰和證書(shū)駐留于其中的MySQL服務(wù)器主機(jī)上運(yùn)行下列命令。

$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem

類似服務(wù)器端配置,上述命令會(huì)詢問(wèn)幾個(gè)問(wèn)題。只管填好字段,就像前面所做的那樣。

我們還需要將創(chuàng)建的客戶機(jī)私鑰轉(zhuǎn)換成RSA類型,如下所示。

$ openssl rsa -in client-key.pem -out client-key.pem

最后,我們需要使用服務(wù)器的CA私鑰和證書(shū),創(chuàng)建客戶機(jī)證書(shū)。

$ 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ī)上,使用下面這個(gè)命令,通過(guò)SSL連接到MySQL服務(wù)器。

$ mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h 
 -u ssluser -p

在輸入ssluser的密碼后,你會(huì)看到如往常那樣的MySQL提示符。

想檢查一下你有沒(méi)有使用SSL,在提示符處輸入狀態(tài)命令。

mysql> status;

如果你已通過(guò)SSL連接上去,它會(huì)在SSL字段顯示密碼信息,如下所示。

如果你不想在命令行中指定客戶機(jī)證書(shū)和私鑰信息,可以創(chuàng)建~/.my.cnf文件,然后將下列信息放到 [client]部分下面。

[client]
ssl-ca=/path/to/ca-cert.pem
ssl-cert=/path/to/client-cert.pem
ssl-key=/path/to/client-key.pem

之后,你只要使用下面這個(gè)命令,就可以通過(guò)SSL連接到服務(wù)器了。

$ mysql -h 
 -u ssluser -p

英文:How to enable SSL for MySQL server and client


名稱欄目:如何為MySQL服務(wù)器和客戶機(jī)啟用SSL?
網(wǎng)站URL:http://www.dlmjj.cn/article/djojcji.html