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