最近有需求要使用DES_ENCRYPT()來作資料的加解密,

查了一下需要先開啟SSL Support,

以下記錄啟用過程,同時適用Mysql.

環境是 MariaDB 5.5 single server

 

使用openSSL準備憑證

查看openssl套件
openssl version

產先CA私鑰
cd /etc/my.cnf.d/ssl
openssl genrsa 2048 > ca-key.pem

產生CA証書
openssl req -new -x509 -nodes -days 3650 -key ca-key.pem -out ca-cert.pem

產生伺服器私鑰
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -out server-req.pem
轉成RSA類型私鑰
openssl rsa -in server-key.pem -out server-key.pem

利用CA証書,私鑰->產生Server証書
openssl x509 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

產生Client私鑰
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -out client-req.pem
轉成RSA類型私鑰
openssl rsa -in client-key.pem -out client-key.pem

利用CA証書,私鑰->產生Clinet証書
openssl x509 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

會得到8個檔案
ca-cert.pem
ca-key.pem
client-cert.pem
client-key.pem
client-req.pem     ->沒用
server-cert.pem
server-key.pem
server-req.pem   ->沒用

 

驗證憑證的正確性
openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem

openssl s_server -cert /etc/my.cnf.d/ssl/server-cert.pem -key /etc/my.cnf.d/ssl/server-key.pem -www  會開啟一個4433的port

openssl s_client -CAfile /etc/my.cnf.d/ssl/ca-cert.pem -connect 127.0.0.1:4433  再開一個連線本地測試結果

正確都會回應OK


啟用Server端SSL功能
修改my.cnf檔
vi /etc/my.cnf
[mysqld]
ssl-ca=/etc/my.cnf.d/ssl/ca-cert.pem
ssl-cert=/etc/my.cnf.d/ssl/server-cert.pem
ssl-key=/etc/my.cnf.d/ssl/server-key.pem

重啟服務
service mysql restart


建立遠端使用SSL登入帳戶
GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'%' IDENTIFIED BY 'P@ssw0rd' REQUIRE SSL; 
FLUSH PRIVILEGES;

遠端登入
將以下三個檔案複製到客戶端
ca-cert.pem
client-cert.pem
client-key.pem

管理軟建設定登入

mariadb_ssl.png

 

其中需注意一點
建立証書時,需要填寫資料,
此時Client與Server的Common Name必須與CA証書的Common Name不同才行.
 

參考

Creating SSL Certificates and Keys Using openssl

Debugging MySQL SSL problems

arrow
arrow
    文章標籤
    mariadb ssl mysql ssl
    全站熱搜

    abcg5 發表在 痞客邦 留言(0) 人氣()