【问题标题】:Connect to a mySQL database in java using SSL connection使用 SSL 连接连接到 java 中的 mySQL 数据库
【发布时间】:2015-12-16 23:14:47
【问题描述】:

请知道我在数据库方面还很陌生。我能够正确安装 mySQL 并安装 java 连接器驱动程序。但是,每当我在 Eclipse 中运行程序并尝试从我创建的数据库中检索信息时,我都会收到以下消息:“需要 SSL 连接,但服务器不支持”。这是我想使用安全 SSL 连接运行的代码:

`public static void main(String[] args) {

    String username = "";
    String password = "";
    String dbURL = "jdbc:mysql://localhost:3306/demo" 
                    + "?verifyServerCertificate=false"
                    + "&useSSL=false"
                    + "&requireSSL=false";


    try{
        // 1. Get a connection to database

        Connection myConn = DriverManager.getConnection(dbURL, username,    password);

        // 2. Create a statement

        Statement myStmt = myConn.createStatement();

        // 3. Execute SQL query

        ResultSet myRs = myStmt.executeQuery("select name from movies");

        // 4. Process the result set

        while(myRs.next()){
            System.out.println(myRs.getString("name") );
        }
    }
    catch(Exception exc){
        exc.printStackTrace();
    }`

【问题讨论】:

    标签: java mysql eclipse ssl


    【解决方案1】:

    要启用 SSL 连接,您的 MySQL 发行版必须使用 SSL 支持构建,如 here 所述。此外,必须使用正确的SSL-related options 来指定相应的证书和密钥文件。

    要检查 SSL 支持,您可以使用以下命令:

    mysqld --ssl --help
    

    要使用 SSL 和 JDBC 与 MySQL 数据库通信,您应该在 JDBC URL 中传递一些连接属性:

    String dbURL = "jdbc:mysql://localhost:3306/demo" 
        + "?verifyServerCertificate=true" 
        + "&useSSL=true"
        + "&requireSSL=true";
    

    【讨论】:

    • 绕过证书验证意味着您可能根本不使用 SSL。
    • @o11c 我不同意。流量仍将经过 SSL 加密。
    • @frankhommers 是的,但是使用攻击者选择的证书加密,而不是服务器的真实证书。
    • @o11c 未受到攻击时,使用 ssl 将加密。不使用它会使您的所有查询和结果都可嗅探。
    猜你喜欢
    • 2015-09-05
    • 2012-10-03
    • 2012-05-28
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多