【问题标题】:How to connect to MySQL server using SSL JDBC如何使用 SSL JDBC 连接到 MySQL 服务器
【发布时间】:2018-03-03 17:22:15
【问题描述】:

您好,我正在尝试使用 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";

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

顺便说一句,我的 MySQL 服务器正在 VPS ubuntu 服务器上运行。

【问题讨论】:

    标签: java mysql ssl jdbc keytool


    【解决方案1】:

    您可以使用 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 的路径。

    【讨论】:

    • 我应该在哪里执行 keytool 命令?在我的 ubuntu 服务器上?
    • 这是您抱怨的 Java 客户端,对吧?当您将文件保存在任何地方时,您可以在任何地方使用 keytool,但最后您需要在客户端上拥有此信任库。要么将其用作默认信任库,要么使用系统属性(javax.net.ssl.trustStore / javax.net.ssl.trustStorePassword)
    • 它的日食抱怨,它给了我这些错误。那么在哪里可以输入keytool 命令呢?
    • 如果你在 Windows 上打开一个命令窗口,如果你在 Linux 上打开一个 shell。这是您需要了解或学习的基础知识,否则您会经常因愚蠢的事情而被阻止。
    • 我在 C:\Program Files\Java\jdk1.8.0_161\bin 中找到了 keytool.exe 并在该文件夹中运行了 cmd 命令,但它给了我错误:keytool error: java.io.FileNotFoundException: server-cert.pem (The system cannot find the file specified)
    猜你喜欢
    • 2016-04-27
    • 2016-04-28
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多