您的位置:首页 > 编程语言 > Java开发

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

2016-12-16 14:02 676 查看

背景

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐