我正在使用HAProxy为我的API执行互TLS终止。
HAProxy通过“验证所需”和一个cert文件启用了相互TLS,以限制对代理我的API的Apache服务的访问。
我只想通过HAProxy允许两个特定的客户端访问。这两个客户端都使用公共的Root/Int CA来签署他们的证书。
我知道HAProxy不允许执行特定的深度检查( 3),所以我不能简单地将每个客户端的整个链添加到我的cert文件中,因为HAProxy仍然会验证任何由CA签名的证书。
我相信我有三个(主要)选择:
或
或
我想使用选项1,尽管我不确信它和其他两个选项一样安全。我的理解是,只要我信任客户端为我提供正确的叶证书,那么在我的HAproxy certs文件中直接使用那些leafs (原文如此)就应该比信任根CA和在ACL或Apache中检查Cert CN更安全。最初的TLS握手将证明提交的证书属于客户端,因此不应该有第三方提交正确的证书到达HAProxy验证步骤的风险。
我感到困惑的主要原因是,我在其他地方看到过类似的问题,答案往往是“使用ACL”或“将CN作为标题传递并在应用程序中验证”。
TL;DR:我是否通过在HAProxy的ca文件中白化特定的证书来引入安全风险,而不是签名ca本身?
我倾向于使用ca文件而不是ACL规则,因为这使得长期支持更容易(只需要替换cert文件,而不是每年更新each配置)。
发布于 2022-06-03 00:50:21
我没有实现叶节点本身的信任,而是选择使用Sartsj提供的部分解决方案在他们关于HAProxy客户端验证的类似问题中。
https://security.stackexchange.com/questions/262411
复制相似问题