问题描述
在调用自定义域名的URL时,遇到了以下错误:
Execution failed due to configuration error: Host name 'xx-1247c652476caa.elb.eu-west-1.amazonaws.com' does not match the certificate subject provided by the peer (CN=*.xx.xx.abc.io)
用户创建了启用了mlts的API网关,并使用vpc link将其与NLB进行了私有集成。NLB在TLS 443端口上监听,并将流量转发到特定端口的EC2实例上。用户还创建了一个自定义域名,并将证书导入了ACM。在Route 53中,用户将自定义域名设置为API网关域名的A记录。
流量应该按照以下方式流动:
自定义域名 -> API网关 -> NLB -> EC2
如果用户访问https://NLB_DNS_Name
,会得到另一个错误,但是应用程序中有一些错误日志。
如果用户直接将自定义域名直接设置为Route53中的NLB DNS名称,可以看到应用程序页面,但是这样绕过了API网关。
当用户调用https://custom_domain_name
时,会出现上述错误(500内部服务器错误)。请问有人知道可能出了什么问题吗?
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据用户的描述,可能有以下几个原因导致证书不匹配的错误:
1. 证书的主题与实际主机名不匹配。
2. 自定义域名的A记录没有正确设置为API网关的域名。
3. API网关没有正确配置与NLB的集成。
以下是解决这些问题的步骤:
1. 确保证书的主题与实际主机名匹配。可以通过检查证书的主题和域名来确认。
2. 在Route 53中,将自定义域名的A记录设置为API网关的域名。确保选择了正确的API网关域名,并将其设置为Alias类型的A记录。
3. 确保API网关与NLB正确集成。可以通过检查API网关的集成设置来确认。
如果以上步骤都正确配置,但仍然出现证书不匹配的错误,可以尝试以下解决方案:
1. 在API网关的Endpoint URL中,使用一个新的FQDN(与*.xx.xx.abc.io
具有相同域名的FQDN)作为解决方案。在Route 53中,为这个FQDN创建一个CNAME记录,并将NLB DNS作为其值。这样可以避免证书错误。
请注意,这只是一个临时解决方案,如果证书的主题与实际主机名不匹配,仍然需要解决证书的问题。
方案2
根据用户的描述,还有一种可能的解决方案是使用ELB作为API网关的后端,而不是NLB。这样可以避免证书不匹配的错误。
以下是使用ELB作为API网关后端的步骤:
1. 在AWS控制台中,创建一个ELB并配置它与EC2实例的连接。
2. 在API网关中,将ELB的DNS名称作为后端的URL。
3. 在Route 53中,将自定义域名的A记录设置为ELB的DNS名称。
请注意,使用ELB作为API网关的后端可能会导致一些额外的成本和配置复杂性。请根据实际需求和预算来选择合适的解决方案。
方案3
如果以上解决方案都无法解决问题,建议联系AWS支持团队寻求进一步的帮助和指导。
希望以上解决方案对您有所帮助。如果您有任何其他问题,请随时提问。