I have a JBoss AS7 connecting to AWS and specifically to S3 over the AWS SDK for Java, I have the access and secret keys, and everything runs fine. I use the S3 for various file sharing.
The JBoss' datasource connects to AWS RDS. I've enabled SSL encryption for the datasource - I have the rds-ca-2019-root.pem
in my truststore configured in my standalone.xml, and my RDS datasource connects and verifies the SSL with no problem.
However, when I try to connect to S3 over the SDK (when the truststore with the RDS cert is enabled), I get the following exception:
Caused by: com.amazonaws.SdkClientException: Unable to execute HTTP request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
So, no truststore enabled: I can connect to S3 through SDK just fine. When I enable the truststore with the RDS certificate: my SDK -> S3 connection breaks.
I can't figure out what certificate I need to add to the truststore so that the SDK can work, or do I need to configure the SDK to use TLS somehow?
Ognjen's answer helped me to troubleshoot this issue. I had the same problem and the issue was the AWS SDK was using the custom truststore that I built for RDS connection. I have specified the custom truststore by setting javax.net.ssl.trustStore
parameter explicitly.
The solution I applied:
I used the script in this documentation to import the rds-combined-ca-bundle.pem
into the $JAVA_HOME/lib/security/cacerts
(You may find this cacerts
file inside the jre/lib/security
folder if you have the JDK installed.). Then I removed the javax.net.ssl.trustStore
setting that I had. Then java started using the default cacerts
file and now all is good.
The default password of java default truststore is chageit
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With