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

如何通过Fargate访问Web服务器?SSL握手失败问题求助

Fargate+NLB下SSL握手失败问题排查与解答

核心问题分析

你遇到的SSL_ERROR_HANDSHAKE_FAILURE_ALERT错误,本质是SSL握手阶段(客户端<->NLB<->Fargate容器)的加密参数协商不匹配,或NLB与容器的SSL配置逻辑冲突。结合HTTP能正常访问的现象,重点排查以下方向:

1. NLB的SSL处理模式冲突

  • 如果是NLB终止SSL:需在NLB上配置ACM证书,此时NLB与Fargate容器之间应使用HTTP通信。若容器侧仍监听HTTPS端口,NLB发送的HTTP明文请求会被容器的SSL服务拒绝,直接导致握手失败。
  • 如果是NLB透传SSL(TCP模式):需确保NLB监听端口配置为TCP 8555,同时容器侧SSL支持的协议版本、加密套件要与客户端(浏览器)兼容,且安全组允许NLB到容器的8555端口流量。

2. 容器侧SSL配置验证

虽然在EC2及EC2 Docker环境正常,但Fargate下需确认:

  • 容器内SSL证书的路径、权限是否正确,Clojure服务是否成功加载证书文件
  • 服务支持的SSL协议版本(避免仅启用过于老旧或小众的协议,比如禁用TLS1.2+)
  • 加密套件配置是否与主流浏览器兼容,排除仅使用废弃套件的情况

你的疑问解答

  • SSL是否需要额外初始化连接?
    不需要额外初始化,但要保证SSL握手两端的参数匹配:如果是NLB透传SSL,容器侧SSL服务需正常监听并处理握手请求;如果是NLB终止SSL,容器侧仅需提供HTTP服务即可。
  • 是否需要配置NAT网关?
    不需要。NAT网关用于Fargate容器访问公网资源(如拉取镜像),而你的问题是外部访问时的SSL握手失败,与容器出网无关。只要容器安全组允许NLB流量、子网路由表配置内部路由即可。

快速验证步骤

  • 用openssl s_client -connect www.doppelkopf.me:8555命令测试,查看握手过程的具体失败节点,确认是否能获取容器侧的证书信息
  • 若选择NLB终止SSL:修改容器服务为HTTP监听8555,在NLB上配置HTTPS监听(绑定ACM证书),将流量转发至容器的8555端口(HTTP)
  • 检查Fargate任务定义,确认容器端口8555已正确暴露,且NLB目标组指向该端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:45:48