最近有需求要使用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
管理軟建設定登入
其中需注意一點
建立証書時,需要填寫資料,
此時Client與Server的Common Name必須與CA証書的Common Name不同才行.
參考
留言列表