Java MySQL 与 SSL 授权证书的连接

标签 java mysql ssl jdbc

我正在尝试使用 Java Rest WebService 连接到 JDBC

首先,我使用 MySQL Workbench 使用用户名和密码以及一个额外的详细信息成功连接,我需要添加一个“SSL 证书颁发机构文件的路径”并工作,我能够连接和使用。我有要使用的证书数据库远程。

现在我正在尝试使用 Java 进行连接,这就是我正在尝试的方式:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConexaoBD {
    // Define o Metodo de Conexao quando a classe � chamada
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public Connection obtemConexao() throws SQLException {
        System.getProperties().setProperty("javax.net.ssl.trustStore","/mysqlcertificate.pem");
        return DriverManager.getConnection("jdbc:mysql://myHost", "myUsername", "myPassword");                                  
    }
}

我研究了在 URL 中放置 useSSL=true 但没有工作或这个 system.getproperties,我还在项目包中 p 了 .pem 文件并且在我的类包中(因为我不知道我需要把文件放在哪里)。

我应该怎么做才能连接?如果没有此 SSL,数据库将拒绝我的连接,我正尝试以这种方式在另一个类中进行连接:

Connection conn = null;
Statement stm = null;
try {
    ConexaoBD bd = new ConexaoBD();
    conn = bd.obtemConexao();

谁能帮帮我?

最佳答案

我的情况类似,但不相同。我可以从工作台连接到 MySQL,但不能从我的代码连接到 MySQL。在工作台中选择的唯一选项是 useSSL if Available。 在那种情况下,下面的代码对我有用。

private String db_server = BaseMethods.getSystemData("db_server");
private String db_user = BaseMethods.getSystemData("db_user");
private String db_password = BaseMethods.getSystemData("db_password");

private void connectToDb() throws Exception {
    String jdbcDriver = "com.mysql.jdbc.Driver";
    String dbUrl = "jdbc:mysql://" + db_server +
        "?verifyServerCertificate=false" +
        "&useSSL=true" +
        "&requireSSL=true";
    System.setProperty(jdbcDriver, "");
    Class.forName(jdbcDriver).newInstance();

    Connection conn = DriverManager.getConnection(dbUrl, db_user, db_password);
    Statement statement = conn.createStatement();
}

关于Java MySQL 与 SSL 授权证书的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864375/

相关文章:

Mysql查询非常慢并且没有使用正确的索引(通过使用group by、IN运算符)

c++ - 在 C 中使用 SSL 的 mongoose 网络服务器的 hello world 示例

javascript - node.js 检查负载 header 是否包含预定义的字符序列、协议(protocol) - TLS

ssl - 无法从 ruby​​gems 下载数据

java - Firebase - 存储货币类型值

java - 错误 : package org. slf4j 不存在

java - 如何为中间相遇攻击收集数据?

java - 为什么按钮的 Intent 不起作用

mysql - 为什么我不能在我的 magento 安装脚本中设置 auto_increment 值?

mysql - 在级联删除上似乎不适用于我的数据库