php连接数据库非明文,MySQL 数据库配置 SSL 安全连接
當使用非加密方式連接MySQL數據庫時,在網絡中傳輸的所有信息都是明文的,可以被網絡中所有人截取,敏感信息可能被泄露。在傳送敏感信息(如密碼)時,可以采用SSL連接的方式。
配置MySQL服務端支持SSL連接,MySQL 5.7.6以前版本的配置方法。
使用命令手工創建SSL文件創建CA文件:
# openssl genrsa 2048 > ca-key.pem
# openssl req -new -x509 -nodes -days 3600 \
> -key ca-key.pem -out ca.pem
創建服務端公鑰和私鑰:
# openssl req -newkey rsa:2048 -days 3600 \
> -nodes -keyout server-key.pem -out server-req.pem
# openssl rsa -in server-key.pem -out server-key.pem
# openssl x509 -req -in server-req.pem -days 3600 \
> -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
創建客戶端公鑰和私鑰:
# openssl req -newkey rsa:2048 -days 3600 \
> -nodes -keyout client-key.pem -out client-req.pem
# openssl rsa -in client-key.pem -out client-key.pem
# openssl x509 -req -in client-req.pem -days 3600 \
> -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
# chown mysql.mysql *.pem
修改MySQL服務端配置文件/etc/my.cnf,增加以下參數[mysqld]
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
MySQL5.7.6及以后版本的配置方法
使用MySQL提供的腳本創建SSL文件,會創建到數據庫所在目錄中# pwd
/usr/local/mysql
# ./bin/mysql_ssl_rsa_setup
修改MySQL服務端配置文件/etc/my.cnf,增加以下參數:[mysqld]
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
配置客戶端以SSL方式連接MySQL:
在服務器端配置了SSL參數后,客戶端發起連接時默認使用SSL方式。
命令行方式使用SSL連接:# mysql -h192.168.0.2 -P 3306 -uroot -p
以非加密方式連接MySQL:# mysql -h192.168.0.2 -P 3306 -uroot -p --ssl-mode=DISABLED
設置用戶必須以SSL方式連接MySQL數據庫:mysql> create user lmlphp@'%' identified by '123456' require ssl;
mysql> grant select on *.* to lmlphp@'%';
此時以非加密方式連接會報錯:
# mysql -h192.168.0.2 -P 3306 -ulmlphp -p --ssl-mode=DISABLED
Enter password:
ERROR 1045 (28000): Access denied for user 'lmlphp'@'192.168.0.2' (using password: YES)
啟用X509身份認證
使用上述步驟創建的符合X509格式的CA文件、公鑰、私鑰可以對連接進行身份認證,進一步提高連接的安全性。需先將CA文件、公鑰、私鑰分發給客戶端。
設置用戶必須以X509方式驗證身份后連接數據庫:mysql> create user lmlphp@'%' identified by '123456' require x509;
mysql> grant select on *.* to lmlphp@'%';
在客戶端使用分發的CA文件、公鑰、私鑰連接數據庫:# mysql -h192.168.0.2 -P 3306 -ulmlphp -p --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
Enter password:
此時若不指定CA文件、公鑰、私鑰,僅使用SSL連接數據庫會報錯:
# mysql -h192.168.0.2 -P 3306 -ulmlphp -p
Enter password:
ERROR 1045 (28000): Access denied for user 'lmlphp'@'192.168.0.2' (using password: YES)
總結
以上是生活随笔為你收集整理的php连接数据库非明文,MySQL 数据库配置 SSL 安全连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多久可以精通_学Python
- 下一篇: 编写五子棋的完整python代码_pyt