首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HAProxy只信任特定客户证书

HAProxy只信任特定客户证书
EN

Security用户
提问于 2022-05-31 12:11:51
回答 1查看 296关注 0票数 1

我正在使用HAProxy为我的API执行互TLS终止。

HAProxy通过“验证所需”和一个cert文件启用了相互TLS,以限制对代理我的API的Apache服务的访问。

我只想通过HAProxy允许两个特定的客户端访问。这两个客户端都使用公共的Root/Int CA来签署他们的证书。

我知道HAProxy不允许执行特定的深度检查( 3),所以我不能简单地将每个客户端的整个链添加到我的cert文件中,因为HAProxy仍然会验证任何由CA签名的证书。

我相信我有三个(主要)选择:

  1. 使用一个只包含两个特定的叶证书的certs文件,并依赖HAProxy拒绝其他所有内容。这意味着我信任的根是叶本身,而我忽略了实际的int/root权限。

  1. 在HAProxy中使用某种形式的ACL来验证所呈现证书的名称或序列匹配我信任的两个证书的名称/序列,并结合cert文件中的根/int证书。

  1. 去掉提供的证书的串行/cn/sha1 1,并在转发到Apache时将其作为头添加,然后在上游Apache服务中执行类似于选项2中的验证。

我想使用选项1,尽管我不确信它和其他两个选项一样安全。我的理解是,只要我信任客户端为我提供正确的叶证书,那么在我的HAproxy certs文件中直接使用那些leafs (原文如此)就应该比信任根CA和在ACL或Apache中检查Cert CN更安全。最初的TLS握手将证明提交的证书属于客户端,因此不应该有第三方提交正确的证书到达HAProxy验证步骤的风险。

我感到困惑的主要原因是,我在其他地方看到过类似的问题,答案往往是“使用ACL”或“将CN作为标题传递并在应用程序中验证”。

TL;DR:我是否通过在HAProxy的ca文件中白化特定的证书来引入安全风险,而不是签名ca本身?

我倾向于使用ca文件而不是ACL规则,因为这使得长期支持更容易(只需要替换cert文件,而不是每年更新each配置)。

EN

回答 1

Security用户

发布于 2022-06-03 00:50:21

我没有实现叶节点本身的信任,而是选择使用Sartsj提供的部分解决方案在他们关于HAProxy客户端验证的类似问题中

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/262411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档