2017-10-16 173 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

相關問題