我正在努力让我的java代码(使用HikariCP
)使用database
与AWS RDS
上的SSL
建立联系。我可以使用database
与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生成的,它位于我的classpath
根上,因为它位于resources
上来自maven
的文件夹。我真的想向truststore
驱动程序提供我自己的MySQL Connector/J
文件,这样就可以移动这个程序,而无需从环境中配置truststore
(这对我来说非常有用,因为我的代码在GlassFish
本地运行,但在AWS Lambda
上的云上运行,谁知道它明天会在哪里运行。
当我尝试使用此配置建立连接时,出现以下错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开file:// truststore [truststore]
起初我认为我的trustore
url
错了,但是如果我将其改为这样的话:
dataSource.clientCertificateKeyStoreUrl=file:///truststore
错误更改为:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开文件:/// truststore [\ truststore(系统找不到指定的文件)]
这表明第一个url
是正确的。
我不知道我做错了什么或如何解决这个问题,`truststore是使用以下命令生成的:
'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
文件有什么问题?
编辑:
深入挖掘我可以找到Exception
:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:无法打开file:// truststore [truststore]
是:
java.net.UnknownHostException:truststore
我不知道这意味着什么,因为我的database
url
是正确的,因为它与MySQL Workbench
中使用的相同。
答案 0 :(得分:0)
如果使用的是Maven,请确保使用-Djavax.net.ssl.trustStore = / home / vagrant和正确的证书,或者使用适当的值配置MAVEN_OPTS,例如:-Djavax.net.ssl .trustStore = / dev,也将其放在Intellij的运行器部分