mariadb配置ssl

參考:

https://blog.csdn.net/johnhill_/article/details/72831932

1、查看mariadb是否支持ssl

進(jìn)入mariadb shell中查看,若存在下圖中所示信息則表示支持

show global variables like "%ssl%";

clipboard.png

2、創(chuàng)建自建root證書

①創(chuàng)建證書私鑰(ca-key.pem)

openssl genrsa 2048 > ca-key.pem

②創(chuàng)建root證書(ca-cert.pem)

openssl req -sha1 -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

clipboard2.png

3、創(chuàng)建服務(wù)端證書

①創(chuàng)建服務(wù)端私鑰(server-key.pem)、證書請(qǐng)求文件(server-req.pem)

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

②將私鑰轉(zhuǎn)換為rsa私鑰格式

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

③生成服務(wù)端證書(server-cert.pem)

openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

clipboard3.png

(注:上圖中的Common Name在整個(gè)自建證書中需保持唯一性)

④驗(yàn)證證書是否成功創(chuàng)建

openssl verify -CAfile ca-cert.pem server-cert.pem

出現(xiàn)如下圖所示則表示證書創(chuàng)建成功,否則檢查Common Name是否發(fā)生沖突(大部分配置失敗都是這個(gè)問題導(dǎo)致)

clipboard4.png

4、創(chuàng)建客戶端證書

①創(chuàng)建證書私鑰(ca-key.pem)

openssl genrsa 2048 > ca-key.pem

②創(chuàng)建root證書(ca-cert.pem)

openssl req -sha1 -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

clipboard5.png

4、創(chuàng)建客戶端證書

①創(chuàng)建服務(wù)端私鑰(client-key.pem)、證書請(qǐng)求文件(client-req.pem)

openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

②將私鑰轉(zhuǎn)換為rsa私鑰格式

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

③生成服務(wù)端證書(server-cert.pem)

openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

④驗(yàn)證證書是否成功創(chuàng)建

openssl verify -CAfile ca-cert.pem client-cert.pem

5、修改mariadb配置文件

①在mariadb的配置文件/etc/my.cnf中添加如下內(nèi)容,后重啟服務(wù)

ssl-ca=/etc/my.cnf.d/ssl/ca-cert.pem

ssl-key=/etc/my.cnf.d/ssl/server-key.pem

ssl-cert=/etc/my.cnf.d/ssl/server-cert.pem

②查看是否啟動(dòng)ssl

show global variables like '%ssl%';

clipboard6.png

6、添加ssl訪問用戶

grant all privileges on . to 'ssl_test'@'localhost' identified by 'ssl_test' require ssl;

grant all privileges on . to 'ssl_test'@'%t' identified by 'ssl_test' require ssl;

flsuh privileges;

7、驗(yàn)證

mysql -u ssl_test -pssl_test --ssl-ca=/root/mariadb_ca/ca-cert.pem --ssl-cert=/root/mariadb_ca/client-cert.pem --ssl-key=/root/mariadb_ca/client-key.pem

clipboard7.png

8、其中涉及的一些原理介紹

(不一定正確僅是個(gè)人理解)

①為何要分別配置客戶端證書、服務(wù)端證書?

mariadb配置ssl,這種方式使用的是SSL雙向認(rèn)證

②為何生成每個(gè)證書時(shí)都要CA證書和CA私鑰?

因?yàn)槿魋erver端向CA申請(qǐng)證書,需要使用CA的私鑰加密server端的公鑰,然后client端通過獲取ca證書中server的公鑰并進(jìn)行驗(yàn)證。同理clientr端向CA申請(qǐng)證書也需使用CA的私鑰加密server端的公鑰,然后server端通過獲取ca證書中的client公鑰并進(jìn)行驗(yàn)證,最后建立SSL連接。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容