You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK11迁移至JDK17部署AWS ECS Fargate遇Bouncy Castle版本错误求助

修复AWS ECS Fargate JDK17迁移后Bouncy Castle认证加密错误

核心排查方向及修复步骤

  • 清理依赖冲突
    运行依赖分析命令排查是否有旧版本Bouncy Castle被间接引入:

    • Maven:mvn dependency:tree | grep bouncycastle
    • Gradle:./gradlew dependencyInsight --dependency bouncycastle
      找到所有旧版本的bcprov/bcpkix依赖,在项目依赖中显式排除,确保只有你指定的1.77版本被加载。
  • 统一Bouncy Castle版本包类型
    JDK17环境下不要同时引入jdk15to18和jdk18on系列包,只保留jdk18on版本:

    <!-- Maven示例,Gradle同理 -->
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk18on</artifactId>
        <version>1.77</version>
    </dependency>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk18on</artifactId>
        <version>1.77</version>
    </dependency>
    
  • 适配JDK17模块系统
    JDK17的模块化环境需要显式允许Bouncy Castle模块,在ECS任务的启动命令中添加参数:

    java --add-modules org.bouncycastle.provider,org.bouncycastle.pkix -jar your-app.jar
    

    若使用非模块化jar包,也可在项目MANIFEST.MF中添加Automatic-Module-Name配置。

  • 验证ECS镜像依赖完整性

    1. 重新构建Docker镜像时清理缓存:docker build --no-cache -t your-image:latest .
    2. 进入镜像内部检查依赖目录(如Spring Boot项目的BOOT-INF/lib),确认Bouncy Castle jar包版本为1.77且无旧版本残留。
  • 检查加密配置初始化
    确认代码中仅使用CryptoConfigurationV2初始化加密配置,避免混用旧版CryptoConfiguration;同时检查是否启用了AES-GCM等需要高版本BC的加密模式,确保配置与AWS SDK版本兼容。

报错根源说明

报错来自AWS SDK的CryptoConfigurationV2.checkBouncyCastle方法,该方法会校验Bouncy Castle版本是否满足认证加密要求。常见触发原因包括:依赖冲突导致旧版本BC被加载、JDK17模块限制导致BC未被正确识别、镜像构建时未更新依赖。

内容的提问来源于stack exchange,提问作者harman bhutani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:33:35