柚子快報(bào)邀請(qǐng)碼778899分享:MYSQL8安全之SSL認(rèn)證
柚子快報(bào)邀請(qǐng)碼778899分享:MYSQL8安全之SSL認(rèn)證
MYSQL8安全之SSL認(rèn)證
SSL概念MYSQL實(shí)現(xiàn)SSL的流程MYSQL配置SSl0、SSL策略1、創(chuàng)建證書2、配置SSL證書檢查狀態(tài)
3、配置SSL用戶創(chuàng)建用戶普通認(rèn)證方式創(chuàng)建用戶強(qiáng)制證書認(rèn)證設(shè)置用戶強(qiáng)制證書登錄
4、SSL登錄SSL加密登錄方法1;SSL加密登錄方法2:
SSL概念
SSL(Secure Socket Layer: 安全套接字) 利用數(shù)據(jù)加密,身份驗(yàn)證和消息完整性驗(yàn)證機(jī)制,為基于TCP等可靠連接的應(yīng)用層協(xié)議。SSL協(xié)議提供的功能主要有:
數(shù)據(jù)傳輸?shù)臋C(jī)密性;利用對(duì)稱密鑰算法對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密身份驗(yàn)證機(jī)制:基于證書利用數(shù)字簽名方法對(duì)服務(wù)器和客戶端進(jìn)行身份驗(yàn)證,其中客戶端的身份驗(yàn)證是可選的消息完整性驗(yàn)證:消息傳輸過程中使用MAC算法來(lái)校驗(yàn)消息的完整性。
如果用戶的傳輸不是通過SSL的方式,那么其在網(wǎng)絡(luò)中數(shù)據(jù)都是以明文進(jìn)行傳輸?shù)摹?/p>
在數(shù)據(jù)庫(kù)方面,客戶端連接服務(wù)器使用SSL連接,能加密通信數(shù)據(jù)。
啟用 SSL:可以在 MySQL 配置文件中啟用 SSL,需要指定 SSL 證書、私鑰和 CA 證書的路徑。SSL 握手驗(yàn)證:MySQL 8 支持 SSL 握手驗(yàn)證,可以確??蛻舳诉B接到正確的服務(wù)器。SSL 客戶端認(rèn)證:MySQL 8 支持客戶端證書認(rèn)證,可以進(jìn)一步增強(qiáng)安全性。SSL 連接限制:可以通過修改 MySQL 配置文件中的參數(shù)來(lái)限制 SSL 連接的最大數(shù)量和連接的最大并發(fā)數(shù)。
總的來(lái)說,MySQL 8 的 SSL 功能可以幫助用戶更安全地管理數(shù)據(jù)庫(kù),提高數(shù)據(jù)安全性。
MYSQL實(shí)現(xiàn)SSL的流程
先為MYSQL服務(wù)器創(chuàng)建SSL證書和私鑰在MYQL里面配置SSL,并啟動(dòng)服務(wù)創(chuàng)建用戶的時(shí)候帶上SSL標(biāo)簽(require ssl)連接數(shù)據(jù)庫(kù)的時(shí)候帶上SSL
MYSQL配置SSl
手工配置:mysql5.7.6以下版本只能手工配置自動(dòng)配置:mysql5.7.6以上版本支持自動(dòng)配置
0、SSL策略
--ssl-mode 是 MySQL 命令行客戶端的一個(gè)選項(xiàng),用于指定 SSL/TLS 連接的模式。
它有四個(gè)可能的值:
DISABLED:禁用 SSLREQUIRED:必須使用 SSLVERIFY_CA:驗(yàn)證CAVERIFY_IDENTITY:驗(yàn)證身份
在連接到遠(yuǎn)程 MySQL 服務(wù)器時(shí),需要保護(hù)敏感信息和數(shù)據(jù)的安全性,因此應(yīng)使用 SSL 來(lái)加密通信。 而為了提供最高級(jí)別的信任和安全性,應(yīng)將--ssl-mode 設(shè)置為REQUIRED(必須使用 SSL)。 --ssl-mode REQUIRED(必須使用 SSL) 是MySQL8中最高安全級(jí)別,它要求客戶端必須使用加密 SSL/TLS 連接到服務(wù)器,并驗(yàn)證服務(wù)器的身份。 而 --ssl-mode VERIFY_IDENTITY(驗(yàn)證身份) 不強(qiáng)制要求加密 SSL/TLS 連接,它僅檢查并驗(yàn)證服務(wù)器證書,因此不如 --ssl-mode REQUIRED 安全。 這意味著 MySQL 客戶端將試圖建立 SSL 連接,并且如果無(wú)法建立 SSL 連接,則不會(huì)連接到 MySQL 服務(wù)器,從而確保只有通過 SSL 連接才能訪問數(shù)據(jù)庫(kù)。
詳細(xì)解釋如下:
REQUIRED 要求所有 MySQL 客戶端必須通過 TLS 密碼套件建立與數(shù)據(jù)庫(kù)服務(wù)器之間的連接,以提供最高級(jí)別的信任和安全性。。 VERIFY_IDENTITY 選項(xiàng)要求 MySQL 客戶端驗(yàn)證數(shù)據(jù)庫(kù)服務(wù)器的身份,并持有與其授予一致的主機(jī)名或 IP 地址。但如果數(shù)據(jù)庫(kù)服務(wù)器使用自簽名證書,則可能會(huì)由于無(wú)法在公鑰基礎(chǔ)架構(gòu)中下載到 CRL 和 OCSP 響應(yīng)而交予妥協(xié)項(xiàng),從而使校驗(yàn)變得不安全。 PREFERRED 標(biāo)志允許客戶端建議并嘗試進(jìn)行 SSL 連接,但不需要建立 SSL 連接。如果 MySQL 客戶端請(qǐng)求未加密連接時(shí),服務(wù)器會(huì)回答該請(qǐng)求。 VERIFY_CA 在服務(wù)器端上對(duì)客戶端啟用 SSL 協(xié)議,并確保 SSL 連接是在根證書頒發(fā)機(jī)構(gòu)的頒發(fā)證書上建立的,而且客戶端提供了匹配考驗(yàn)的專業(yè)證書,非常適合客戶端軟件的驗(yàn)信標(biāo)準(zhǔn)很高或者要求傳輸數(shù)據(jù)增強(qiáng)保護(hù)的情況。
1、創(chuàng)建證書
# 安裝openssl依賴包
dnf install -y openssl
# 查看openssl版本
openssl version
# 生成SSL連接所需要的RSA密鑰對(duì)
## datadir 指定數(shù)據(jù)庫(kù)文件路徑
## user和uid 指定運(yùn)行mysql_ssl_rsa_setup命令的用戶
mysql_ssl_rsa_setup --datadir=/var/lib/mysql --user=mysql --uid=mysql
# 默認(rèn)執(zhí)行即可
mysqld_ssl_rsa_setup
## -vvv 詳細(xì),debug模式
會(huì)自動(dòng)在datadir目錄下創(chuàng)建下面的證書文件
ca-key.pem:CA證書私鑰文件,用于生成SSL連接所需的服務(wù)器和客戶端證書。ca.pem:CA證書公鑰文件,用于驗(yàn)證SSL連接中服務(wù)器和客戶端證書的合法性。client-cert.pem:客戶端證書,在SSL連接中用于驗(yàn)證客戶端的身份。client-key.pem:客戶端證書的私鑰,用于加密和解密SSL連接中客戶端發(fā)送的數(shù)據(jù)。private_key.pem:私鑰文件,用于加密和解密SSL連接中的數(shù)據(jù)。public_key.pem:公鑰文件,用于驗(yàn)證SSL連接中的數(shù)據(jù)。server_cert.pem:服務(wù)器證書,用于驗(yàn)證MySQL數(shù)據(jù)庫(kù)服務(wù)器的身份。server_key.pem:服務(wù)器證書的私鑰,用于加密和解密SSL連接中服務(wù)器發(fā)送的數(shù)據(jù)。
2、配置SSL證書
https://blog.csdn.net/Sn_Keys/article/details/126425869
[mysqld]
# 指定CA證書公鑰文件的路徑
ssl-ca=/path/to/ca.pem
# 指定mysql服務(wù)器證書的路徑
ssl-cert=/path/to/server_cert.pem
# 指定mysql服務(wù)器證書的私鑰路徑
ssl-key=/path/to/server_key.pem
[client]
# 指定CA證書公鑰文件的路徑
ssl-ca=/path/to/ca.pem
# 指定mysql客戶端證書的路徑
ssl-cert=/path/to/client_cert.pem
# 指定mysql客戶端證書的私鑰路徑
ssl-key=/path/to/client_key.pem
重啟mysql服務(wù)
# 重啟mysql服務(wù)
systemctl restart mysqld
檢查狀態(tài)
-- 檢查數(shù)據(jù)庫(kù)是否啟用SSL
show variables LIKE 'have_SSl';
-- 查看全局變量中包含"SSL"字符的所有變量名和值
show global variables LIKE '%SSL%';
-- 查看tls安全傳輸版本
show global variables LIKE 'tls_version';
從 MySQL5.7.35 開始,不推薦使用 TLSv1 和 TLSv1.1 連接協(xié)議
3、配置SSL用戶
創(chuàng)建用戶普通認(rèn)證方式
-- 創(chuàng)建用戶
CREATE USER 用戶名@'%' IDENTIFIED BY '表名';
-- 給用戶授權(quán)
GRANT ALL ON *.* TO 用戶名@'%';
-- 應(yīng)用權(quán)限配置
FLUSH PRIVILEGES;
-- 查看用戶權(quán)限
SELECT user,host,ssl_type,ssl_cipher FROM mysql.user;
創(chuàng)建用戶強(qiáng)制證書認(rèn)證
REQUIRE SSL 強(qiáng)制要求客戶端使用 SSL/TLS加密協(xié)議與服務(wù)器進(jìn)行通信 REQUIRE X509強(qiáng)制要求客戶端不僅要使用 SSL/TLS連接,而且還需要提供一個(gè)有效的 x509證書。在使用 REQUIRE X509 時(shí),MySQL 服務(wù)器會(huì)驗(yàn)證客戶端提供的證書是否是受信任的,并且該證書是否匹配已經(jīng)注冊(cè)的用戶帳戶中的證書。
-- require ssl 強(qiáng)制用戶使用證書認(rèn)證
CREATE USER 用戶名@'%' IDENTIFIED BY '表名' require ssl;
-- require x509 強(qiáng)制用戶使用證書認(rèn)證
CREATE USER 用戶名@'%' IDENTIFIED BY '表名' require x509;
-- 給用戶授權(quán)
GRANT ALL ON *.* TO 用戶名@'%';
-- 應(yīng)用權(quán)限配置
FLUSH PRIVILEGES;
-- 查看用戶權(quán)限
SELECT user,host,ssl_type,ssl_cipher FROM mysql.user;
設(shè)置用戶強(qiáng)制證書登錄
-- 設(shè)置強(qiáng)制ssl
alter user user0001@'%' require ssl;
-- 取消強(qiáng)制ssl
alter user user0001@'%' require none;
4、SSL登錄
SSL加密登錄方法1;
# --ssl-mode=disable: 表示關(guān)閉SSL加密模式
mysql -uroot -p --ssl-mode=disable
# 登錄mysql后查看加密模式
mysql> status;
# --ssl-mode=required: 表示強(qiáng)制開啟SSL加密模式
mysql -uroot -p --ssl-mode=required
-- 登錄mysql后查看加密模式
status;
SSL加密登錄方法2:
# 指定CA證書及客戶端證書及私鑰
mysql -uroot -p --ssl-ca=/var/lib/mysql/ca.pem \
--ssl-cert=/var/lib/mysql/client-cert.pem \
--ssl-key=/var/lib/mysql/client-key.pem
柚子快報(bào)邀請(qǐng)碼778899分享:MYSQL8安全之SSL認(rèn)證
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。