微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS API Gateway提供“通过了多个客户端证书”错误

如何解决AWS API Gateway提供“通过了多个客户端证书”错误

我已经为我的API网关设置了相互TLS身份验证。 然后,我将客户证书放在信任库中。该文件包含客户端证书,中间证书和根证书(私有CA)。

使用浏览器(Windows上为Chrome)访问API网关时,浏览器会要求我提供客户端证书。我选择与放入信任库中相同的证书。

API网关在浏览器中报告以下内容

{“ message”:“无效的客户端证书链。通过了多个客户端证书”}

更新:我也尝试过仅在信任库中放置中间和根证书。同样的错误

更新2:使用C#代码(WebClient)访问API从Windows证书存储区或从光盘(pfx文件)加载证书时,也会报告相同的错误

解决方法

如果您的信任存储区不包含所有中间CA证书,则客户端必须发送多证书链。 TLS握手可以正常工作,但是在某个地方存在显式检查,该检查禁止多证书链。状态代码是400,而不是403(!),并且您收到“通过了多个客户端证书”错误。

但是,如果您愿意将所有中间CA放入API网关信任存储中,则服务器应该要求客户端发送中间证书。在这种情况下,客户端只能发送一个证书,并且API网关应该可以工作。

因此,当API网关将初始客户端证书与信任库匹配时,出现了问题,并且找不到中间节点。我会检查这些东西:

  1. 确保使用特定版本ID以及指向信任存储区的S3链接。否则,很难知道它实际使用的是哪个版本,因为一旦您将S3添加到新版本,API网关就会自动自动选择新版本。也许您没有使用您认为的信任库。

  2. 您的信任库应仅包括CA证书-根证书和中间件。您说您在其中放置了客户端证书,所以可能是造成问题的原因。尝试将其取出。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。