客户端与我的经典负载均衡器的 SSL/TLS 连接失败并显示“不可信证书”错误消息。或者,我在尝试将 SSL/TLS 证书上传到我的经典负载均衡器时,也遇到错误。
简述
如果您在经典负载均衡器上使用HTTPS/SSL 侦听器,则必须安装 SSL/TLS 证书。负载均衡器使用该证书来终止 SSL/TLS 客户端连接。如果您遇到证书上传问题,请排查证书上传错误。
如果连接完成但证书不受信任,则浏览器或客户端会显示以下“不受信任的证书”错误消息之一:
- “本网站提供的安全证书不是由可信的证书颁发机构颁发的。”
- “example.com 使用的安全证书无效。该证书不可信,因为颁发机构证书未知。”
- “example.com 使用的安全证书无效。该证书不可信,因为它是自签名的。”
要解决此问题,请排查“不受信任的证书”错误。
解决方法
排查证书上传错误
检查您的配置
确保您满足导入证书的先决条件。此外,确认证书不包含多余的空格,以 -----BEGIN CERTIFICATE----- 开头并以 -----END CERTIFICATE----- 结尾。
如果您仍然遇到问题,请根据收到的错误采取以下排查措施。
排查“公钥证书无效。”
如果公钥证书不是 X.509 PEM 格式,则证书可能无法加载。要解决此问题,请将您的证书转换为 X.509 PEM 格式。有关有效证书格式的示例,请参阅排查服务器证书问题。
排查证书已上传但证书链被拒绝的问题
如果证书链包含您的公钥证书,或者证书顺序不正确,则会出现此问题。
证书链必须仅包含按顺序通向根证书的中间证书。证书链必须以您的证书颁发机构(CA)生成的证书开头,并以 CA 根证书结尾。不要包含您的公钥证书或不属于信任路径的中间证书。通常,CA 会以正确排序的捆绑包形式提供中间证书和根证书,您可以直接使用。
排查“私钥无效”
如果私钥证书使用了错误的格式或已加密,则会出现此问题。要解决此问题,请确保私钥证书使用正确的格式。此外,请移除密码短语,使密钥不被加密。
排查无法在 ACM 控制台中部署的证书
如果您的经典负载均衡器使用 4096 位 RSA 或椭圆曲线(EC)密钥,则无法在 AWS Certificate Manager(ACM)控制台中使用该证书。相反,将证书上传到 AWS Identity and Access Management(IAM)。然后,在配置负载均衡器侦听器时,为默认 SSL 证书选择来自 IAM。
排查未显示在 ACM 控制台中的 ACM 证书
如果您在 ACM 控制台中找不到您的 ACM 证书,则证书可能与您的负载均衡器位于不同的 AWS 区域。要解决此问题,请确保证书和负载均衡器位于同一区域。或者,在您的负载均衡器所在的区域申请新证书。
排查“不受信任的证书”错误
如果客户端无法构建到根 CA 的完整信任路径,则您会收到“不受信任的证书”错误。通常,此问题的发生是因为证书链中缺少中间证书,或者您使用了自签名证书。
若要解决此问题,请完成以下步骤。
检查是否缺少中间证书链
运行以下命令:
openssl s_client -showcerts -connect www.example.com:443
注意: 请将 example 替换为您的域。
在命令输出中,检查验证返回码。如果代码为 0,则证书链完整且证书有效。在这种情况下,问题是由于自签名证书或客户端的信任存储导致的。要解决此问题,请继续执行排查自签名证书问题。
如果代码为 21,则中间证书链缺失。要解决此问题,请使用完整的证书链重新上传证书。证书链必须仅包含按顺序通向根证书的中间证书。证书链必须以您的 CA 生成的证书开头,并以 CA 根证书结尾。不要包含您的公钥证书,也不要包含不属于信任路径的中间证书。通常,CA 会以正确排序的捆绑包形式提供中间证书和根证书,您可以直接使用。
上传或替换您的证书
为您的负载均衡器上传新的 SSL/TLS 证书。最佳实践是使用 ACM 导入 SSL/TLS 证书。但是,您也可以使用 IAM 上传证书。
然后,使用新证书为您的负载均衡器配置 HTTPS 侦听器。
注意: 确保在其有效期结束之前替换证书。
排查自签名证书问题
默认情况下,客户端会拒绝自签名证书,因为这些证书不是由受信任的 CA 颁发的。如果您使用自签名证书,则可能会收到“自签名”或“颁发者证书未知”的错误消息。要在生产环境中解决此问题,请使用由公共 CA 颁发的证书。在 ACM 中申请公共证书或导入由 CA 颁发的证书。对于必须使用自签名证书的测试环境,您可以将证书添加到每个客户端的信任存储中。
排查一个负载均衡器中的多个域问题
经典负载均衡器每个侦听器只能提供一个证书。您不能在经典负载均衡器中使用服务器名称指示(SNI)。如果您托管多个域,则负载均衡器可能会返回与请求的主机不匹配的证书。因此,客户端会报告该证书不受信任或无效。
要对此问题进行故障排除,请执行以下操作之一。
使用主题备用名称(SAN)将多个域添加到单个证书中。请向您的 CA 查询 SAN 的最大数量。
在端口 443 上为负载均衡器配置 TCP 侦听器。此配置将连接直接传递到后端 Amazon Elastic Compute Cloud(Amazon EC2)实例,而无需终止。因此,您可以直接在实例上管理 HTTPS 流量。
迁移到应用程序负载均衡器。最佳实践是使用应用程序负载均衡器来处理 HTTPS,因为您可以为单个 HTTPS 侦听器使用多个证书。应用程序负载均衡器会自动为每个域提供正确的证书。
确认证书按预期工作
重新运行以下命令,确认验证返回码的输出现在为 0:
openssl s_client -showcerts -connect www.example.com:443
注意: 请将 example 替换为您的域。
然后,在新的浏览器会话中加载网站,确认错误消息已消失。
相关信息
将证书导入 ACM
经典负载均衡器的 SSL/TLS 证书