如何解决Java通过JDBC访问MySQL时SSL连接告警问题

来源:互联网 发布:网络传输文件软件 编辑:程序博客网 时间:2024/05/20 23:05

背景

MySQL 5.5.45+, 5.6.26+, 5.7.6+开始支持SSL连接,如果没有明确设置相关的选项时,缺省要求SSL连接。为兼容性考虑,旧应用程序需要设置verifyServerCertificate和useSSL属性。MySQL连接时给出的告警信息也清楚的给出了原因和处理方案。
Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

方案1: 在URL中设置相关属性

static {try {Class.forName("com.mysql.jdbc.Driver");} catch (Exception e) {e.printStackTrace();}}public Connection getConnection() throws SQLException {String url = "jdbc:mysql://localhost:3306/db_hibernate?verifyServerCertificate=false&useSSL=false";String user = "root";String password = "infinera";return DriverManager.getConnection(url, user, password);}

方案2: 通过Properties属性设置

static {try {Class.forName("com.mysql.jdbc.Driver");} catch (Exception e) {e.printStackTrace();}}public Connection getConnection() throws SQLException {String url = "jdbc:mysql://localhost:3306/db_hibernate";String user = "root";String password = "infinera";Properties properties = new Properties();properties.setProperty("user", "root");properties.setProperty("password", "infinera");properties.setProperty("useSSL", "false");properties.setProperty("verifyServerCertificate", "false");return DriverManager.getConnection(url, user, password);}




0 0
原创粉丝点击