当前位置: 首页 > 知识库问答 >
问题:

将spring配置为通过ssl连接到mysql

干高歌
2023-03-14

我从Java应用程序通过SSL连接到MySQL。我已经将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);

我想使用带有C3p0的spring通过SSL连接到MYSQL。这是我的spring配置文件,它从jdbc读取参数。财产。

<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>

如何配置spring来设置属性verifyServerCertificate=true
useSSL=true
requireSSL=true“
也可以在spring配置文件中设置密钥库和信任库值。

共有3个答案

东门晟
2023-03-14

您可以使用基于Java的配置来配置数据的useSSl、requireSSL和verifyServerCertificate属性。DataSource类的addDataSourceProperty方法为您提供了这种能力,如下面的代码片段所示(您可以用C3p0实例替换HikariDataSource)

MySQL Connector/J公开密钥存储的配置属性(例如,trustCertificateKeyStoreUrl),因此我假设addDataSourceProperty也可以用于这些属性。

我不知道XML配置模式是否提供了与addDataSourceProperty相对应的标记。

public DataSource createPslDataSource(final MyDataSourceProperties myDataSourceProperties) {

    HikariDataSource dataSource = new HikariDataSource();

    dataSource.addDataSourceProperty("useSSL", true);
    dataSource.addDataSourceProperty("requireSSL", true);
    dataSource.addDataSourceProperty("verifyServerCertificate", true);

    dataSource.setJdbcUrl(myDataSourceProperties.getJdbcUrl());
    dataSource.setUsername(myDataSourceProperties.getUsername());
    dataSource.setPassword(myDataSourceProperties.getPassword());

    return dataSource;
}
范华清
2023-03-14

无需将keyStoretrustStore传递给java程序或设置任何系统属性,因为它可以通过每个连接的连接属性来实现!

因此,您可以为不同的连接(以及应用程序,如果您在app server中)使用不同的认证。

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

JDBC:mysql://example.com:3306/MYDB?verifyServerCertificate=true

有文件记载:

  • https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html
  • https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html
闻人锦
2023-03-14

jdbc.properties中jdbc.url的值必须是

jdbc:mysql://127.0.0.1:3306/MySampleDb?verifyServerCertificate=true

这些参数必须直接添加到MySQL的URL中。keyStoretrust Store的参数应在开始时传递给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

你可以使用Spring来设置系统属性,但我永远不会使用它,它太麻烦了。

 类似资料:
  • 我试图理解Retheart文档的这部分内容,但无法理解:https://softinstigate.atlassian.net/wiki/spaces/rh/pages/9207828/installation+and+setup#installationandsetup-5.1connectreshearttomongodbovertls/ssl 使用keytool创建导入mongod使用的公共

  • “无法确定数据库类型None的嵌入式数据库驱动程序类” 我应该给Application.Properties中的spring.datasource.url值什么?或者其他建议?谢了。

  • 我在一个网站上工作,这是用来重置LDAP用户的密码。我无法通过SSL与服务器建立连接。我尝试了各种代码和身份验证类型。 这是服务器上用于与网站所在的LDAP连接的内容。我还用两个ssl端口测试了它。636和3269。 我在网站上使用以下代码 获取异常“LDAP服务器不可用”。我尝试了389端口和没有ssl的代码,它工作得很好。 请让我知道哪里出了问题。

  • 问题内容: 如何使用Node.js通过SSL连接到MongoDB服务器? 我已经阅读了一些驱动程序(mongojs,mongodb- native )的源代码,并且我已经搜索了一段时间,但是似乎找不到任何合适的教程,指南或文档。 问题答案: 如评论中所建议,具有所需的一切。 我使用以下命令启动并运行: 编辑 你也可以从猫鼬做ssl :

  • 我有一个Spring Boot 5应用程序,我也在一台IBM MQ服务器上运行它。 现在我们希望它连接到三个或更多 MQ 服务器。我现在的目的是将 XY 连接信息添加到环境中,然后我得到 XY MQConnectionFactory bean 和处理所需的所有其他 bean。 目前这是我所拥有的: 但这是相当静态的。有没有一种优雅的方式来做到这一点? 我偶然发现了集成流。这可能是一个有效的解决方案

  • 我们在Kafka中只启用了ssl加密。客户端身份验证已关闭。 我们有一个spring boot应用程序连接到它。现在,