Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过ssl将springboot应用程序与mysql服务器连接_Java_Mysql_Spring Boot_Ssl - Fatal编程技术网

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

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启动应用程序与基于ssl的远程sql server连接。我正在我的应用程序中使用JPA。我已经阅读了有关ssl和所需证书的内容,我需要MySql Conctor/J来建立连接。我只是想知道我应该选择什么样的方法,因为我是一个完全的初学者,在互联网上找不到有效的辅导。如有任何解释,我们将不胜感激。

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

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://
,但我以前从未尝试过