配置spring以通过ssl连接到mysql

d12*_*123 4 ssl spring jdbc spring-jdbc c3p0

我从我的Java应用程序连接到SSL over SSL.我已将MYSQL配置为支持SSL并生成客户端证书.我已将服务器CA证书和客户端证书导入密钥库.这就是我的代码目前的样子

    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);
Run Code Online (Sandbox Code Playgroud)

我想使用带有C3p0的spring通过SSL连接到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>
Run Code Online (Sandbox Code Playgroud)

如何配置spring来设置属性 verifyServerCertificate = true
useSSL = true
requireSSL = true"

还可以在spring配置文件中设置keyStore和trustStore值.

Mar*_*tör 9

jdbc.urljdbc.properties中的值必须是

JDBC:MySQL的://127.0.0.1:3306/MySampleDb verifyServerCertificate =真useSSL =真requireSSL =真

必须将这些参数直接添加到MySQL的URL中.参数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
Run Code Online (Sandbox Code Playgroud)

可以 使用Spring来设置系统属性,但我从不使用它,它太麻烦了.


gav*_*koa 8

这是没有必要的传递keyStoretrustStorejava程序或设置任何系统性能,因为它可以通过连接属性每个连接可以实现!

因此,您可以为不同的连接使用不同的证书(如果您在应用服务器中,则可以使用应用程序)。

原答案:https : //stackoverflow.com/a/51879119/173149相关部分:

jdbc:mysql://example.com:3306/MYDB?verifyServerCertificate=true&useSSL=true&requireSSL=true&clientCertificateKeyStoreUrl=file:cert/keystore.jks&clientCertificateKeyStorePassword=123456&trustCertificateKeyStoreUrl=file:cert/truststore.jificateKeyStoreUrl&

它记录在案: