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

本地运行的Java客户端无法访问AWS部署的HTTPS服务端点问题咨询

问题根因
  • TLS版本/加密套件不兼容:你使用的AdoptOpenJDK 8u292默认禁用了TLS 1.0/1.1,同时新增了TLS 1.3预览支持,若AWS侧负载均衡(ALB/CLB)配置的TLS策略和本地Java支持的套件不匹配,会导致SSL握手过程中服务端主动断开连接。
  • 老版本HTTP客户端不支持SNI:从报错栈帧可看出你调用链路使用的commons-httpclient 3.x本身不支持SNI扩展,若AWS负载均衡绑定了多个HTTPS域名,服务端无法识别你要访问的域名对应的证书,会直接中断连接。
  • 证书配置异常:虽然你已提前导入证书,可能存在导入的证书链不完整(缺失根证书/中间证书)、导入到了错误的JRE密钥库、应用启动时指定了自定义密钥库未同步导入证书等问题,导致SSL证书校验失败触发连接关闭。
  • AWS侧访问控制拦截:AWS WAF、安全组、网络ACL可能限制了你本地公网IP的访问,或拦截了符合特定规则的请求(如请求体大小超标、SOAP请求头不符合要求),导致连接被主动重置。
解决方案
  1. 修复SNI兼容问题
    如果可以升级依赖,优先将commons-httpclient 3.x替换为支持SNI的Apache HttpClient 4.x及以上版本;如果无法修改依赖,可在应用启动参数中添加以下配置,强制Axis2启用SNI支持:
-Daxis2.transport.http.sni-enabled=true
-Dorg.apache.axis2.transport.http.HTTPSender.disableDefaultClient=true
  1. 调整TLS版本配置
    如果是TLS 1.3兼容导致的握手失败,可在应用启动参数中添加以下配置,强制客户端使用TLS 1.2发起请求:
-Djdk.tls.client.protocols=TLSv1.2

如果需要兼容更低版本TLS,可修改JRE安装目录下jre/lib/security/java.security文件,删除jdk.tls.disabledAlgorithms配置项中的TLSv1, TLSv1.1条目。
3. 验证证书导入正确性
执行以下命令确认证书已正确导入到当前应用使用的JRE默认密钥库中:

keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -alias <你的证书别名>

默认密钥库访问密码为changeit,如果查询不到对应证书,需重新导入完整的证书链(根证书+中间证书+服务端证书)。
4. 排查AWS侧访问规则

  • 检查AWS负载均衡关联的安全组,确认已放通你本地公网IP的443端口入方向访问权限
  • 查看AWS WAF日志,确认对应请求是否被WAF规则拦截,若被拦截可调整对应WAF规则
  • 检查负载均衡的空闲超时配置,若请求处理时长超过默认超时阈值,可适当调大超时参数避免连接被主动断开。

内容的提问来源于stack exchange,提问作者Subodh Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:30:02