amazon-web-services - 具有多个 CA 配置的 Haproxy
问题描述
这里的 SSL 新手,使用 haproxy 1.8,当我有 2 个 aws API 网关指向同一个代理服务器和 2 个由 api 网关本身生成的客户端证书分配给每个网关时,我遇到了这种情况。
现在我有一个 haproxy 服务器,我正在尝试以仅允许从这 2 个 api 网关访问的方式进行配置。
当我只为 api 网关执行此操作时,这意味着我只将 ca 文件设置为包含 1 个客户端证书的文件,它按预期工作得很好,但我不知道如何设置两个客户端证书都被允许。
所以我有这些文件设置:
- haproxy.pem其中包含
- go daddy 颁发的服务器证书
- 私钥
- 去爸爸证书
- 从 api 网关复制的api-gw.pem第一个客户端证书
- 从 api 网关复制的api-gw2.pem第二个客户端证书
- client-certs.crt是api-gw.pem和api-gw2.pem的串联版本
当我像下面这样为客户端证书绑定 ssl 时,它工作得很好:
bind :443 ssl crt /etc/haproxy/haproxy.pem verify required ca-file /etc/haproxy/api-gw.pem
或者
bind :443 ssl crt /etc/haproxy/haproxy.pem verify required ca-file /etc/haproxy/api-gw2.pem
对于上面的每个绑定,只有正确的 api 网关可以访问代理,而另一个不能。
但是当我执行以下操作以允许两者都访问代理服务器时,即使文件包含两者,它也只允许第一个客户端证书:
bind :443 ssl crt /etc/haproxy/haproxy.pem verify required ca-file /etc/haproxy/client-certs.pem
由于我在证书和 ssl 方面的知识有限,我不确定将多个客户端证书放入一个文件中是否可行,但根据我在互联网上阅读的内容,建议这样做......我仍然不不知道为什么它不起作用。
编辑 我迈克尔建议,我将两个客户端证书放在一起使用
cat api-gw.pem api-gw2.pem > api-gw-combo.pem
组合文件如下所示:
-----BEGIN CERTIFICATE-----
.....cert content for api-gw
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
.....cert content for api-gw2
-----END CERTIFICATE-----
但与我的初始文件相同client-certs.crt
,haproxy 仍然只接受第一个证书。
解决方案
推荐阅读
- android - 图像处理:当我在 colab 上转换模型时,我的应用程序无法正常工作
- python - Posner 提示任务 - 提示方向规范的错误消息
- regex - 正则表达式匹配两个字符串之间多次出现的字符串
- java - Observable 完成后返回项目列表
- typescript - 我可以在 TypeScript 的非类装饰器中获取 typeof 对象吗?
- javascript - 如何动态调度函数在指定时间运行
- xcode - 未定义的符号 ___cxa_guard_acquire 和 ___cxa_guard_release
- javascript - 有什么作用?。在打字稿中是什么意思?
- c - 按钮不进入开关盒
- amazon-web-services - 如何使用 AWS Batch Transform 处理大型数据集