2013-01-10 61 views
3

我通過SSL從我的Java應用程序連接到MySQL。我已配置MYSQL以支持SSL並生成客戶端證書。我已將服務器CA證書和客戶端證書導入密鑰庫。這是我的代碼目前看起來像配置spring以通過ssl連接到mysql

String url = "jdbc:mysql://127.0.0.1:3306/MySampleDb? verifyServerCertificate =true&useSSL=true&requireSSL=true" 

    System.setProperty("javax.net.ssl.keyStore","/home/cert/keystore"); 
    System.setProperty("javax.net.ssl.keyStorePassword","password"); 
    System.setProperty("javax.net.ssl.trustStore","/home/cert/truststore"); 
    System.setProperty("javax.net.ssl.trustStorePassword","password"); 

    Class.forName("com.mysql.jdbc.Driver"); 
    con = DriverManager.getConnection(url, user, password); 

我想使用C3P0春天在SSL.This連接到MySQL是我的spring配置文件,該文件讀取jdbc.properties參數。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="${jdbc.driver}"/> 
    <property name="jdbcUrl" value="${jdbc.url}"/> 
    <property name="user" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
    ........ 
</bean> 

我怎樣才能春天配置設置屬性 verifyServerCertificate =真
useSSL =真
requireSSL =真正的」

也是它可以設置密鑰庫和信任值在Spring配置文件

回答

7

jdbc.properties中的jdbc.url的值必須爲

的jdbc:mysql的://127.0.0.1:3306/MySampleDb verifyServerCertificate =真& useSSL =真& requireSSL =真

這些參數必須直接添加到URL爲MySQL。爲keyStoretrustStore參數應傳遞到JVM啓動時,像這樣:

-Djavax.net.ssl.keyStore=path_to_keystore_file 
-Djavax.net.ssl.keyStorePassword=password 
-Djavax.net.ssl.trustStore=path_to_truststore_file 
-Djavax.net.ssl.trustStorePassword=password 

可以use Spring to set system properties,但我從來沒有使用它,它是太麻煩了。