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

自定义域名对接ElastiCache Redis SSL时Lambda连接失败问题咨询

问题根因与解决方案

根因说明

你遇到的报错是TLS证书的主机名校验不匹配导致的:

  • AWS ElastiCache Redis的SSL证书仅对AWS官方分配的原生端点域名(后缀为*.use1.cache.amazonaws.com这类)生效,你自定义的CNAME域名dev-my-site.mydomain.com不在证书的使用者可选名称(SAN)列表中,因此严格的TLS校验会失败。
  • 本地redis-cli可以正常连接的原因是:redis-cli的TLS模式默认不开启服务器主机名校验,因此跳过了这个校验逻辑,而Lambda运行环境的标准TLS库默认开启严格校验。

可选解决方案

方案1:跳过TLS主机名校验(推荐非生产/内部可信环境使用)

在Redis客户端的TLS配置中,仅关闭主机名匹配校验,保留证书有效性校验,平衡易用性和基础安全性。
以Node.js的ioredis客户端为例,配置示例:

const Redis = require('ioredis');
const redisClient = new Redis({
  host: 'dev-my-site.mydomain.com',
  port: 6379,
  tls: {
    // 自定义校验逻辑,直接返回undefined代表校验通过
    checkServerIdentity: (hostname, cert) => undefined
  }
});

注意:该方案需确保你的DNS解析链路可信,建议仅在VPC内部使用私有托管的DNS记录,避免DNS劫持风险。

方案2:直接使用ElastiCache原生端点(最推荐)

如果没有必须使用自定义域名的强需求(比如跨环境统一域名配置),直接使用AWS分配的原生主端点master.dev-my-site.wmrsll.use1.cache.amazonaws.com:6379连接,不需要修改任何TLS配置,安全性最高,也没有额外维护成本。

方案3:新增TLS代理层(适用必须用自定义域名的生产场景)

如果业务强制要求使用自定义域名,你可以在VPC内部署TCP代理服务(如HAProxy、Nginx),为代理配置覆盖你自定义域名的SSL证书,Lambda连接代理的自定义域名,代理再转发请求到ElastiCache原生端点。该方案需要额外维护代理集群,可用性和性能都需要额外保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:18:03