如何使用SSL JDBC连接到MySQL服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用SSL JDBC连接到MySQL服务器相关的知识,希望对你有一定的参考价值。

嗨,我正在尝试使用java远程登录我的mysql数据库。我创建了一个需要SSL的远程帐户。我按照本指南做了这个:https://www.digitalocean.com/community/tutorials/how-to-configure-ssl-tls-for-mysql-on-ubuntu-16-04

现在,一旦我尝试连接到DB Java,就会抛出此错误:

WARN: 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.

所以我将其添加到我的网址:

       + "&useSSL=true"
      + "&requireSSL=true";

但现在它要求我给它一个trustStoreand和trustStorePassword。我在哪里或如何找到/创建这些?

我的MySQL服务器在VPS ubuntu服务器上运行。

答案

您可以使用keytool命令创建和导入服务器的证书:

keytool -import -alias mysql -file server-cert.pem -keystore mycerts -storepass changeit

其中server-cert.pem是mysql的证书(您可以按照此链接下的说明获取:http://do.co/2FaIK8F,mycerts将是您的trustStore(将由命令创建),trustStorePassword是changeit(当然,选择一个)

server-cert.pem是教程中提到的文件,其中包含服务器的证书。

然后,您需要使用以下代码将trustStore添加到Java:

System.setProperty("javax.net.ssl.trustStore", "mycerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

changeit是您在keytool命令中选择的密码,其中mycerts是trustStore的路径。

以上是关于如何使用SSL JDBC连接到MySQL服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 应用程序通过 JDBC 连接到远程 MySQL 服务器

如何使用python连接到redshift jdbc url?

在 context.xml 中指定用于 jdbc 的 SSL

如何创建允许 PHP 通过 SSL 连接到 MySQL 的证书?

使用 JDBC 瘦客户端通过 SSL 连接到 Ignite 集群

如何将 jdbc 连接器连接到 MySql 数据库服务器? [复制]