使用Java Connector / J和SSL连接到RDS中的MySQL

问题描述 投票:1回答:1

我正在努力使我的Java代码(使用HikariCP)使用HikariCPdatabase上的AWS RDS连接。我可以使用SSLdatabase连接,只是无法找到如何配置MySQL Workbench驱动程序以使用MySQL Connector/J 5.1.45访问database

当前,这是我的SSL属性文件:

HikariCP

jdbcUrl=jdbc:mysql://mypath.jqwejrkq4568833.us-east-1.rds.amazonaws.com:3306/myschema username=myusername password=mypassword dataSource.cachePrepStmts=true dataSource.prepStmtCacheSize=250 dataSource.prepStmtCacheSqlLimit=2048 dataSource.useServerPrepStmts=true dataSource.useLocalSessionState=true dataSource.useLocalTransactionState=true dataSource.rewriteBatchedStatements=true dataSource.cacheResultSetMetadata=true dataSource.cacheServerConfiguration=true dataSource.elideSetAutoCommits=true dataSource.maintainTimeStats=false dataSource.clientCertificateKeyStoreUrl=file://truststore dataSource.clientCertificateKeyStorePassword=123456 dataSource.useSSL=true dataSource.verifyServerCertificate=true dataSource.requireSSL=true 文件是用truststore RDS生成的,它位于我的certificate from here根目录上,因为它位于我的classpathresources文件夹中。我真的很想向maven驱动程序提供我自己的truststore文件,以便无需在环境中配置MySQL Connector/J即可移动该程序(这对我来说非常有用,因为我的代码在truststore上本地运行],但在GlassFish的云上,谁知道明天将在哪里运行。

当我尝试使用此配置建立连接时,出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开文件:// truststore [truststore]

起初我以为我的AWS Lambda trustore是错误的,但是如果我将其更改为这样的内容:

url

错误变为:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开文件:/// truststore [\ truststore(系统找不到指定的文件)]

这向我表明第一个dataSource.clientCertificateKeyStoreUrl=file:///truststore 是正确的。

我不知道我在做什么错或如何解决此问题,`truststore是通过以下命令生成的:

url

我不知道我在做什么错,这使我想到了这个问题:

我的'C:\Program Files\Java\jre1.8.0_151\bin\keytool.exe' -importcert -alias AwsRdsMySqlCACert -file rds-combined-ca-bundle.pem -keystore truststore -storepass 123456 文件怎么了?


编辑:

深入挖掘,我可以找到truststore的原因:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开文件:// truststore [truststore]

是:

java.net.UnknownHostException:信任库

我不知道这意味着什么,因为我的Exception database是正确的,因为它与我在url中使用的相同。

java mysql ssl jdbc mysql-connector
1个回答
0
投票

如果使用的是Maven,请确保您使用的-Djavax.net.ssl.trustStore = / home / vagrant具有正确的证书,或者使用适当的值配置MAVEN_OPTS,例如:-Djavax.net.ssl。 trustStore = / dev,也将其放在Intellij]的“ runner”部分中

© www.soinside.com 2019 - 2024. All rights reserved.