通过ssl将springboot应用程序与mysql服务器连接

时间:2020-09-10 10:34:16

标签: java mysql spring-boot ssl

我需要将Spring Boot应用程序与ssl上的远程sql服务器连接。我在我的应用程序中使用JPA。我已经阅读了有关ssl和所需的证书的信息,并且需要MySql Conector / J来建立连接。我只是想知道我应该是什么样的方法,因为我是一个完整的初学者,并且无法在互联网上找到有效的杜鹃花。任何解释将不胜感激。

2 个答案:

答案 0 :(得分:1)

参考文献在这里:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html(向下滚动至安全部分)

基本上,您需要应用程序证书和服务器CA证书的PKCS12 / JKS格式。然后将其添加到JDBC URL。

示例:在application.yml中,假设我们使用的是PKCS12格式,请使用SSL并验证服务器CA。假定客户端(应用程序)证书文件名为client-cert.p12,CA证书文件名为server-ca.p12

spring:
  datasource:
    url: >
      jdbc:mysql://{DATABASE_IP}/{DATABASE_NAME}?
      useSSL=true&
      requireSSL=true&
      clientCertificateKeyStoreUrl=file://{SOME_DIRECTORY}/client-cert.p12&
      clientCertificateKeyStoreType=PKCS12&
      clientCertificateKeyStorePassword={KEY_STORE_PASSWORD}
      verifyServerCertificate=true&
      trustCertificateKeyStoreUrl=file://{SOME_DIRECTORY}/server-ca.p12&
      trustCertificateKeyStoreType=PKCS12&
      trustCertificateKeyStorePassword={KEY_STORE_PASSWORD}
    username: {USERNAME}
    password: {PASSWORD}

如果使用JKS,文件格式通常为jks,类型为JKS。如果您不需要验证CA,请设置verifyServerCertificate = false并且不需要trustCertificateKeyStore内容(最后3行)

答案 1 :(得分:0)

如果您已成功获取客户端证书,请在下面的表达式中使用clientkeystore.jks 您可以提供以下网址作为网址并可以连接:

spring.datasource.url=jdbc:mysql://XXXX:3306/mydatabase?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&verifyServerCertificate=true&useSSL=true&requireSSL=true&clientCertificateKeyStoreUrl=file:/opt/clientkeystore.jks&clientCertificateKeyStorePassword=mypass&trustCertificateKeyStoreUrl=file:/opt/truststore.jks&trustCertificateKeyStorePassword=mypass