Spring JPA应用程序属性文件使用SSL。

20

我正在尝试关闭本地mysql数据库的ssl,但在spring的application.properties文件中找不到相应的属性。

我的当前文件如下:

# ===============================
# = DATA SOURCE
# ===============================

# Set here configurations for the database connection

# Connection url for the database "test"
spring.datasource.url = jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# Username and password
spring.datasource.username = root
spring.datasource.password = blah

# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

# ===============================
# = JPA / HIBERNATE
# ===============================

# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager).

# Show or not log for each sql query
spring.jpa.show-sql = true

# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto = update

# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

我尝试过 spring.datasource.useSSl=false,但这并没有起作用。 我还尝试了 spring.datasource.url = jdbc:mysql://localhost:3306/test&useSSL=false


1
你不需要做任何事情来关闭SSL,因为它默认是禁用的(如果你想启用它,你必须在JDBC URL中添加"useSSL=true"并配置几个属性)。 - Andy Wilkinson
2
@AndyWilkinson 谢谢回复。我知道如何使用 useSSL=true,稍后我将会使用。然而,我的问题是如何在 Spring 的 application.properties 文件中添加 useSSL=true/false。你不能将它添加到数据源的 URL 中,我已经尝试过了,参见以上内容。 - SJC
4个回答

48

我通过以下方式解决了我的问题:

jdbc:mysql://localhost:3306/test?verifyServerCertificate=false&useSSL=false&requireSSL=false

2

你应该使用'?'而不是'&'吗?

这是你的。

spring.datasource.url =jdbc:mysql://localhost:3306/test&useSSL=false

我想说的是

spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false

2

我不喜欢污染java选项或系统属性,因为在应用程序容器中它们是无用的...

您可以使用以下代码为MySQL连接设置SSL证书:

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

文档如下:


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接