Java Lambda调用带自定义证书的内部ALB遇SSL证书匹配问题求助
解决Java Lambda调用内部ALB的SSL证书匹配问题
你的问题核心是:调用ALB时使用的AWS托管DNS域名(internal-name-account.eu-west-2.elb.amazonaws.com)不在ALB证书的Subject Alternative Names(SAN)列表里(证书只包含*.example.com),导致SSL主机验证失败。以下是几种无需禁用SSL验证的解决方案:
方案一:用Route 53私有托管区配置私有域名
这是生产环境最常用的方案,通过给ALB绑定私有域名匹配证书规则:
- 在Route 53创建与Lambda所在VPC关联的私有托管区,域名设置为
example.com(已有对应私有托管区可直接复用)。 - 在托管区添加一条CNAME记录,将自定义子域名(比如
internal-alb.example.com)指向ALB的AWS托管DNS名称。 - 确认Lambda所在VPC的DHCP选项集使用AWS默认域名服务器,确保Lambda能解析私有托管区的域名。
- 修改Lambda代码,用
internal-alb.example.com代替原AWS ELB域名发起请求,此时证书的*.example.com会匹配该私有域名,SSL验证正常通过。
方案二:使用AWS CloudMap实现服务发现
适合需要动态管理服务的场景,通过服务发现给ALB分配合规域名:
- 创建一个私有命名空间,域名设置为
example.com并关联Lambda所在的VPC。 - 在该命名空间下注册ALB为服务实例,选择ALB作为服务的网络资源,自动关联其DNS记录。
- Lambda通过CloudMap分配的服务域名(比如
alb-service.example.com)调用ALB,该域名属于*.example.com范围,与证书匹配。
方案三:扩展证书的SAN列表(不推荐)
可以将ALB的AWS托管DNS域名添加到证书的SAN中,但存在明显弊端:
- ALB的AWS域名是自动生成的,若后续ALB重建(比如修改配置、跨AZ迁移),域名可能变更,需要重新更新证书,维护成本高。
- 操作上需重新申请或更新SSL证书,添加
internal-name-account.eu-west-2.elb.amazonaws.com到SAN列表,再重新绑定到ALB。
注意:禁用SSL主机验证会跳过证书域名匹配检查,存在中间人攻击风险,生产环境绝对不建议使用。
内容的提问来源于stack exchange,提问作者DimitriosP
相关产品推荐
相关产品推荐

