Java 通过ssl将springboot应用程序与mysql服务器连接
我需要将我的spring启动应用程序与基于ssl的远程sql server连接。我正在我的应用程序中使用JPA。我已经阅读了有关ssl和所需证书的内容,我需要MySql Conctor/J来建立连接。我只是想知道我应该选择什么样的方法,因为我是一个完全的初学者,在互联网上找不到有效的辅导。如有任何解释,我们将不胜感激。如果您已成功获得客户端证书,请使用下面的表达式clientkeystore.jks 您可以提供以下作为url,并可以连接:Java 通过ssl将springboot应用程序与mysql服务器连接,java,mysql,spring-boot,ssl,Java,Mysql,Spring Boot,Ssl,我需要将我的spring启动应用程序与基于ssl的远程sql server连接。我正在我的应用程序中使用JPA。我已经阅读了有关ssl和所需证书的内容,我需要MySql Conctor/J来建立连接。我只是想知道我应该选择什么样的方法,因为我是一个完全的初学者,在互联网上找不到有效的辅导。如有任何解释,我们将不胜感激。如果您已成功获得客户端证书,请使用下面的表达式clientkeystore.jks 您可以提供以下作为url,并可以连接: spring.datasource.url=jdbc:m
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
参考信息如下:(向下滚动一点至安全部分)
基本上,您需要应用程序证书和服务器CA证书的PKCS12/JKS格式。然后将其添加到JDBCURL中
示例:在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)将服务器证书导入jdk中的cacerts,地址为$JAVA_HOME/lib/security/cacerts 2)或使用-Djavax.net.ssl.trustStore=-Djavax.net.ssl.trustStorePassword=将其作为参数提供给JAVA程序,我想我必须发送某种获取服务器CA证书的请求,之后,我可以使用它来配置。如何申请该证书以及如何将其存储在我们的存储中?您需要向服务器的所有者/管理员询问证书文件。数据库服务器也应该存储相同的密钥文件。这是我们人工复制的密钥文件。如果所有者将证书存储在某个在线目录中,我可以在证书的应用程序属性中传递“URL”吗?我想只需将文件://
更改为http://
,但我以前从未尝试过