当前位置:   article > 正文

使用ssl双向验证登录mysql_mysql配置同时支持密码和密钥认证登录

mysql配置同时支持密码和密钥认证登录

1. 检查服务端是否开启ssl认证

show variables like '%ssl%';


 

2. 确认用户强制使用ssl认证

  1. use mysql;
  2. #username换成具体的用户
  3. select ssl_type from user where user='username' and host='%';
  4. ALTER USER 'username'@'%' REQUIRE SSL;
  5. FLUSH PRIVILEGES;

3. 生成客户端证书

1. 找服务端提供三个原始文件

2. 生成相应密钥文件并导入jdk

  1. # 生成truststore文件,使用密码password123
  2. keytool -importcert -alias Cacert -file ca.pem -keystore truststoremysql -storepass password123
  3. # windows下没有openssl,可以找一台linux服务器执行第二个命令生成中间文件client-keystore.p12 使用密码password456,注意这个密码要跟第三部使用的密码一致,不然会出现密码不验证的问题
  4. openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:password456 -out client-keystore.p12
  5. # 回到目标服务器执行第三个命令生成keystore文件,使用密码password456
  6. keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass password456 -destkeystore keystoremysql -deststoretype JKS -deststorepass password456

3. 修改jdbc连接字符串

  1. public class JDBCMySQL {
  2. public static void main(String[] args) {
  3. Connection connection = null;
  4. String urlWithCe = "jdbc:mysql://192.168.1.2:3306/mysql?"
  5. + "useSSL=true"
  6. + "&verifyServerCertificate=true"
  7. + "&requireSSL=true"
  8. + "&trustCertificateKeyStoreUrl=file:E:\\truststoremysql"
  9. + "&trustCertificateKeyStorePassword=password123"
  10. + "&clientCertificateKeyStoreUrl=file:E:\\keystoremysql"
  11. + "&clientCertificateKeyStorePassword=password456";
  12. try {
  13. Class.forName("com.mysql.cj.jdbc.Driver");
  14. connection = DriverManager.getConnection(urlWithCe,
  15. "test", "123456");
  16. PreparedStatement preparedStatement = connection.prepareStatement("select * from " +
  17. "acac");
  18. System.out.println(preparedStatement.executeQuery().first());
  19. } catch (Exception exception) {
  20. exception.printStackTrace();
  21. }
  22. }
  23. }

4. 注意事项

  1. 执行第二个命令使用的密码要和第三个命令使用的密码保持相同,不然连接Mysql的时候会提示密码不正确一类的。
  2. 执行第三个命令需要先执行第一个命令,不然也会报错密码不正确一类。
  3. 连接选项clientCertificateKeyStoreUrl和trustCertificateKeyStoreUrl默认是使用url,可以选择本地文件file:,也可以使用resource文件classpath:

详细参考

链接icon-default.png?t=N2N8https://blog.csdn.net/weixin_42911645/article/details/127070812

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/815807
推荐阅读
相关标签
  

闽ICP备14008679号