2017-10-16 174 views
1

我已经在启用了SSL的Amazon RDS实例上创建了Postgres数据库。可以使用亚马逊(.pem)提供的cert文件通过命令行访问该实例。现在我想连接到Spring Boot应用程序中的数据库。做了一些研究,似乎我必须使用keytool命令Import PEM into Java Key Store在密钥库中安装证书。所以我运行以下命令来生成jks键。如何在启用了SSL的Spring Boot应用程序中连接到RDS postgres

openssl x509 -outform der -in rds-combined-ca-bundle.pem -out aws-cert.der 
keytool -import -alias rds-key -keystore rds.jks -file aws-cert.der 
keytool -list -keystore rds.jks 

我也运行命令keytool -list -keystore rds.jks列出验证的密钥库。

Keystore type: JKS 
Keystore provider: SUN 

Your keystore contains 1 entry 

rds-key, Oct 16, 2017, trustedCertEntry, 
Certificate fingerprint (SHA1): E8:11:88:56:E7:A7:CE:3E:5E:DC:9A:31:25:1B:93:AC:DC:43:CE:B0 

rds.jks文件复制到/ src目录/主/资源后,添加以下行application.properties用于SSL:

server.ssl.enabled=true 
server.ssl.key-alias=rds-key 
server.ssl.key-password=xxx111 
server.ssl.key-store=classpath:rds.jks 
server.ssl.key-store-provider=SUN 
server.ssl.key-store-type=JKS 

不过,我得到了错误:

java.lang.IllegalArgumentException: java.io.IOException: Alias name [rds-key] does not identify a key entry 

为什么密钥库不起作用?

回答

0

为spring引导应用程序配置SSL keystore/truststore准备出站/入站https连接使用的ssl上下文。您将需要为postgres数据库连接配置不同的SSL套接字工厂。可以使用postgres lib提供的实现,也可以创建自己的自定义SSLSocketFactory类,它使用您的rds特定密钥库准备ssl上下文。

请查看 - >https://basildoncoder.com/blog/postgresql-jdbc-client-certificates.html

相关问题