2016-10-05 71 views
0

我正在尝试使用Java Rest WebService连接到JDBC使用SSL授权证书的Java MySQL连接

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

现在我试图使用Java进行连接,这就是我想要的方式:我研究关于放入useSSL =在URL真正

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");         
    } 
} 

,但没有工作或本system.getproperties,我也p .pem文件在项目包和我的类包(因为我不知道什么地方我需要把文件)。

我该怎么做才能连接?如果没有这个SSL,数据库拒绝我的连接,我试图在另一类这种方式连接:

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

谁能帮助我?

回答

0

我的情况类似,但不相同。我可以从工作台连接到MySQL,但不能从我的代码连接到MySQL。在工作台中选择的唯一选项是useSSL(如果可用)。 下面的代码在这种情况下适用于我。

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(); 
}