我正在将我的 AWS Elastic Beanstalk 实例从“Tomcat 8.5 with Java 8 running on 64bit Amazon Linux”升级到“Tomcat 8.5 with Corretto 11 running on 64bit Amazon Linux 2”。此应用程序与 AWS 对话以发送电子邮件并使用 AWS Java SDK 在 S3 中存储文件。该应用程序在当前环境中运行良好。
当应用程序使用 AWS Java SDK 时,在新环境中部署相同的 WAR 文件会因 Java SSL 证书异常而中断。
例外是:Exception: Unable to execute HTTP request: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
。
我知道这与 java 正在使用的 cacerts
文件有关,并且缺少 AWS 证书。
那么,我的第一个问题是,为什么 AWS 上支持的 Tomcat 版本不允许应用程序与其自己的 AWS 服务通信?如果这是所需的行为,我该如何解决这个问题? (知道在某些情况下可以销毁/重新创建弹性 beanstalk 实例,因此修复必须是 WAR 本身的一部分)。