成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

mysql怎么開啟ssl mysql開啟ssl連接

mysql 兩種連接方式和SSL連接、x509認(rèn)證

mysql連接可分為socket連接和TCP|IP連接兩種。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比陸良網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式陸良網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋陸良地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

[root@localhost bin]# mysql -uroot -p123456 -S/tmp/mysql.sock

-S/tmp/mysql.sock可以省略,因為默認(rèn)參數(shù)如下:

假如sock文件另有其它,那么就后面不能省略,需要指定下。

mysql -h127.0.0.1 -P3306 -uroot -p123456

那么問題來了,如何知道當(dāng)前連接的連接方式?

查看當(dāng)前連接方式,使用\s 或者status命令

Connection: Localhost via UNIX socket 表示使用 socket 進(jìn)行本地的連接

SSL: Not in use 沒有使用SSL

Connection: 127.0.0.1 via TCP/IP 使用TCP/IP 協(xié)議進(jìn)行遠(yuǎn)程連接

SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 使用了SSL加密

mysql5.7默認(rèn)是使用SSL的方式來進(jìn)行通訊的。

/s輸出SSL: Not in use,說明當(dāng)前沒有使用SSL連接。

再看下error.log有一個waning:failed to set up SSL because of the following SSL liberary error:SSL context is not usable withut certificate and private key。公密鑰文件不存在,所以無法啟用SSL的連接方式。

1、進(jìn)入bin目錄執(zhí)行命令: mysql_ssl_rsa_setup 在/data 根目錄 生成相關(guān)的*.pem 密鑰文件。

2、對新生成到pem文件授權(quán)chown mysql:mysql *.pem

3、 /etc/init.d/mysqld restart 重啟mysql

4、進(jìn)入命令客戶端執(zhí)行\(zhòng)s

使用IP/TCP遠(yuǎn)程連接時,\s輸出 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256。說明已經(jīng)用上SSL加密。

使用socket進(jìn)行本地連接,就不會使用SSL加密。\s輸出SSL: Not in use;

因為SSL開啟可能有性能影響。如果不希望使用ssl加密登錄連接,那么可以使用下面命令進(jìn)行禁用:mysql -h127.0.0.1 -uroot -p123456 --ssl-mode=DISABLED

強制一個用戶使用ssl

之后david用戶就必須使用ssl登錄了,否則報錯如下:

取消一個用戶強制使用ssl

x509認(rèn)證在開啟SSL的基礎(chǔ)下,還強制指定用戶必須使用client-cert.pem和client-key.pem證書、密鑰文件來登錄,否則登錄不了。x509是mysql最高等級的認(rèn)證機制。

之前已經(jīng)在data根目錄生成了8個 *.pem文件

把其中client-cert.pem和client-key.pem導(dǎo)出

如下,再使用之前的命令登錄。發(fā)現(xiàn)登錄不了了。

此時想要登錄必須在客戶端指定SSL CERT File和SSL Key File 如下在navicat中

在mysql workbench中

如何為MySQL服務(wù)器和客戶機啟用SSL

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

在MySQL服務(wù)器中實施SSL可以加密在服務(wù)器與客戶機之間來回傳輸?shù)乃袛?shù)據(jù),因而防止廣域網(wǎng)或數(shù)據(jù)中心里面可能出現(xiàn)的竊聽或數(shù)據(jù)嗅探行為。此外,SSL還通過SSL證書提供了身份驗證機制,因而可以保護(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已安裝在運行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選項已被啟用還是被禁用。為此,登錄進(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.cnf配置文件。添加或去掉注釋[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.cnf中,還要找到“bind-address = 127.0.0.1”,并將它改成:

bind-address = *

那樣一來,你就可以從另一個主機連接到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配置沒有問題。

驗證SSL配置的另一個辦法就是,在MySQL服務(wù)器里面再次運行“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客戶機上的SSL

鑒于MySQL服務(wù)器端配置已完成,不妨將目光轉(zhuǎn)移到客戶機端。就MySQL客戶機而言,我們就需要基于服務(wù)器的CA私鑰和證書,創(chuàng)建新的私鑰和證書。

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

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

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

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

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

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

$ 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)移到你想要運行MySQL客戶機的任何主機上。

在客戶機主機上,使用下面這個命令,通過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字段顯示密碼信息,如下所示。

如何配置MySQL SSL

MySQL默認(rèn)的數(shù)據(jù)通道是不加密的,在一些安全性要求特別高的場景下,我們需要配置MySQL端口為SSL,使得數(shù)據(jù)通道加密處理,避免敏感信息泄漏和被篡改。

當(dāng)然,啟用MySQL SSL之后,由于每個數(shù)據(jù)包都需要加密和解密,這個對MySQL的性能是有不小影響的,讀者們在使用的時候,要根據(jù)實際情況斟酌。

MySQL客戶端登錄服務(wù)器時候的密碼不是明文傳輸,有加密策略處理。

筆者是在 ubuntu12.04 系統(tǒng)上使用MySQL 5.5版本測試的,其他環(huán)境請讀者自行匹配。

配置MySQL服務(wù)器證書

編輯 /etc/mysql/my.cnf 文件

# ssl-ca=/etc/mysql/cacert.pem

# ssl-cert=/etc/mysql/server-cert.pem

# ssl-key=/etc/mysql/server-key.pem

把上面三行默認(rèn)證書配置注釋打開,使用自己的證書。筆者就使用上次在搭建自己的CA服務(wù) – OpenSSL CA 實戰(zhàn)文章中生成的證書

ssl-ca=/home/yunweipai/user_certs/ca_cert.cer

ssl-cert=/home/yunweipai/user_certs/web.cer

ssl-key=/home/yunweipai/user_certs/web_key_plain.pem

這里需要注意的是,在ubuntu上,配置證書后如果不生效,參考這里解決方法

注意上面配置的 web_key_plain.pem 文件,由于MySQL不支持加密后的私鑰,因此我們使用命令

openssl rsa -in web_key.pem -passin pass:Yunweipai@123 -out web_key_plain.pem

將私鑰解密。MySQL不支持私鑰加密的原因是從安全性角度考慮,因為如果要用戶傳遞一個加密的私鑰,那么必須要用戶傳密碼,那么MySQL怎么存儲這個密碼呢?這就引出了我們在密碼存儲和傳輸?shù)陌踩ㄗh里面提到的一系列問題了。

所以MySQL為了簡化實現(xiàn),就不支持私鑰加密。

指定客戶端連接方式

MySQL服務(wù)端在對客戶端授權(quán)的時候,可以通過選項指定客戶端連接MySQL 服務(wù)器的SSL級別,參考MySQL賦權(quán)的 REQUIRE值:

ssl_option

SSL: 不認(rèn)證客戶端,客戶端不需要提供證書

X509: 客戶端必須發(fā)送一個有效的X509證書

issuer: 客戶端的證書是否是服務(wù)器所配置的CA頒發(fā)的(在我們場景下是ca_cert.cer頒發(fā)的證書)

subject: 認(rèn)證證書的subject(關(guān)于證書的subject在之前的文章有介紹)

cipher: 指定加密算法

這些選項可以疊加使用,如:X509|issuser

客戶端連接(SSL方式)

mysql 客戶端連接

mysql -u root -pChangeme_123 -P 3306 --ssl-ca=/home/yunweipai/user_certs/ca_cert.cer

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 36

Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql \s

--------------

mysql Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (i686) using readline 6.2

Connection id: 36

Current database:

Current user: root@localhost

SSL: Cipher in use is DHE-RSA-AES256-SHA

Current pager: stdout

Using outfile: ''

Using delimiter: ;

Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: latin1

Db characterset: latin1

Client characterset: latin1

Conn. characterset: latin1

UNIX socket: /var/run/mysqld/mysqld.sock

Uptime: 29 sec

Threads: 1 Questions: 109 Slow queries: 0 Opens: 48 Flush tables: 1 Open tables: 41 Queries per second avg: 3.758

--------------

JDBC連接

在jdbc字符串中增加下面參數(shù)

useSSL=trueverifyServerCertificate=false

這么就不需要客戶端配置證書了,配置就簡單很多。因為mysql本身有賬號口令認(rèn)證,因此不需要證書認(rèn)證。

MySQL啟用SSL連接

說明:pem配置文件中在test目錄下有,但是最好自己生成

/home/mysql/mysql-5.5.35-linux2.6-x86_64/mysql-test/std_data

/etc/init.d/mysqld restart

SHOW VARIABLES LIKE 'have_%ssl';

SHOW VARIABLES LIKE '%ssl%';

如果為yes,表示服務(wù)端已經(jīng)開啟SSL

查看服務(wù)ssl等狀態(tài)

SHOW STATUS LIKE 'Ssl_cipher';

STATUS或者\s

SSL: Cipher in use is DHE-RSA-AES256-SHA表示客戶端已經(jīng) 使用SSL連接

客戶端無SSL登陸:

客戶端開啟SSL登陸:

GRANT ALL PRIVILEGES ON . TO 'ssluser'@'%' IDENTIFIED BY 'zdh1234' REQUIRE SSL;

本機登陸需要單獨新增localhost

GRANT ALL PRIVILEGES ON . TO 'ssluser'@'localhost' IDENTIFIED BY 'zdh1234' REQUIRE SSL;

查看用戶:

select host,user,password from mysql.user;

修改密碼,需要重啟mysql:

客戶端無SSL登陸:

返回錯誤:ERROR 1045 (28000): Access denied for user 'ssluser'@'localhost' (using password: YES)

客戶端開啟SSL登陸:

如果不填密碼或者--ssl-ca都無法登陸

由于創(chuàng)建server使用的服務(wù)器域名為zdh-11

校驗失敗,無法登陸:

校驗成功,可以登陸:

分享文章:mysql怎么開啟ssl mysql開啟ssl連接
文章來源:http://jinyejixie.com/article48/dosjoep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、App設(shè)計網(wǎng)站營銷、電子商務(wù)Google、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
克什克腾旗| 民和| 平度市| 灵寿县| 即墨市| 长沙县| 襄汾县| 文成县| 咸丰县| 色达县| 梧州市| 称多县| 仁布县| 仁寿县| 渑池县| 启东市| 桓仁| 崇州市| 洪泽县| 大荔县| 五莲县| 新昌县| 乐昌市| 铜陵市| 临朐县| 富蕴县| 浦江县| 平武县| 大兴区| 海安县| 长丰县| 鹤岗市| 江山市| 昂仁县| 旬邑县| 疏附县| 故城县| 四子王旗| 大悟县| 邹城市| 清丰县|