查看mysql是否支持ssl连接
show variables like '%ssl%';
生成服务器端
openssl genrsa 2048 > ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem -subj "/C=FR/ST=''/L=''/O=mysqld/CN=mysqld-CA" > ca-cert.pem
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -subj "/C=FR/ST=''/L=''/O=mysqld/CN=mysqld-server" > server-req.pem
openssl rsa -in server-key.pem -out server-key.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
生成客户端证书
openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem -subj "/C=FR/ST=''/L=''/O=mysql-client/CN=mysql-client"
openssl rsa -in client-key.pem -out client-key.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
在前面的步骤中, 我们已经生成了8个文件, 分别是:
ca-cert.pem: CA 证书, 用于生成服务器端/客户端的数字证书.
ca-key.pem: CA 私钥, 用于生成服务器端/客户端的数字证书.
server-key.pem: 服务器端的 RSA 私钥
server-req.pem: 服务器端的证书请求文件, 用于生成服务器端的数字证书.
server-cert.pem: 服务器端的数字证书.
client-key.pem: 客户端的 RSA 私钥
client-req.pem: 客户端的证书请求文件, 用于生成客户端的数字证书.
client-cert.pem: 客户端的数字证书.
配置my.cnf
[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem
添加一个用户强制要求ssl连接
create user 'bioid'@'%' identified by 'Abc12345';
grant all on *.* to 'bioid'@'%' require ssl;
连接测试
mysql --ssl-ca="/home/mysqlcert/ca-cert.pem" --ssl-cert="/home/mysqlcert/client-cert.pem" --ssl-key="/home/mysqlcert/client-key.pem" -u bioid -p -S /home/mysql/mysql.sock
配置jdbc的连接使用ssl
导出keystore供java连接使用
keytool -importcert -file ca-cert.pem -keystore truststore --storepass Abc123
设置java环境变量编辑/etc/profile
增加一行
export JAVA_OPTS=" -Djavax.net.ssl.trustStore=/home/mysqlcert/truststore -Djavax.net.ssl.trustStorePassword=Abc123"
执行下source /etc/profile使其生效
配置jdbc连接url
jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?verifyServerCertificate=true&useSSL=true&requireSSL=true
本文详细介绍了如何检查MySQL是否支持SSL连接,然后一步步指导如何生成服务器端和客户端的SSL证书,包括ca-cert.pem、ca-key.pem等文件。接着,配置my.cnf以启用SSL,并创建一个需要SSL连接的用户。最后,展示了如何进行连接测试以及配置Java JDBC连接使用SSL,包括导出keystore和设置环境变量。
1586

被折叠的 条评论
为什么被折叠?



