Ail*_*n79 11 ssl ssl-certificate apache-2.2 mitmproxy
我刚刚意识到 SSL 中间人攻击比我想象的要普遍得多,尤其是在企业环境中。我听说并看到自己有几家拥有透明 SSL 代理服务器的企业。所有客户端都配置为信任此代理的证书。这基本上意味着雇主理论上可以拦截 SSL 加密的流量,而浏览器中不会弹出任何警告。如上所述,客户端带有受信任的证书。这只能通过手动验证正在使用的证书来揭示。
在我看来,雇主似乎利用其优越地位来监视员工的 SSL 流量。对我来说,这使得 SSL 的整个概念变得不可信。我自己使用 mitmproxy 成功测试了类似的设置,并且能够读取客户端和我的电子银行服务器之间的通信。这是不应该向任何人透露的信息。
因此,我的问题很简单:如何在服务器端验证信任链?我想确保客户端使用我服务器的证书和只有一个信任链。我想知道这是否可以通过Apache的SSL配置来实现?这将很方便,因为它可以轻松应用于许多应用程序。如果这是不可能的,有没有人知道在 PHP 中执行此操作的方法?或者您有其他建议吗?
HBr*_*ijn 14
在我看来,雇主似乎利用其优越地位来监视员工的 SSL 流量。对我来说,这使得 SSL 的整个概念变得不可信
问题不在于SSL的概念,也不在于技术实现,而在于其他人可以完全控制连接的一个端点,即您的工作站。
这就是实际安全风险的根源......
从安全角度来看,是您的工作站遭到破坏,这破坏了在正常情况下阻止 MITM 成功的信任链。
如何验证服务器端的信任链?
你不能。这是客户端完成的。
根据您的用例,您可以做的是RFC 7469 HTTP 公钥固定,其中您向客户端发送了一个附加标头,其中包含您的实际 SSL 证书或您使用的 CA 的列表(散列)。
我认为这个问题更适合security.stackexchange.com,其中许多问题都讨论了 MITM 的主题。但无论如何:
服务器证书的验证仅在客户端完成,不能以某种方式移动到服务器,因为在客户端验证证书的要点是,客户端需要确保它正在与正确的服务器交谈并且不能信任(不受信任的)服务器为客户端做出这个决定。
在 SSL 拦截的情况下,从服务器的角度来看,TLS 客户端是 SSL 拦截防火墙/AV。因此,服务器端的问题是检测它是否正在与预期的客户端(浏览器)对话(防火墙/AV)。最安全的方法是使用客户端证书对客户端进行身份验证 - 事实上,如果使用客户端身份验证,SSL 拦截将不起作用,即 TLS 握手将失败,因为 MITM 无法提供预期的客户端证书。
只是,很少使用客户端证书。此外,失败的 TLS 握手并不意味着客户端可以在没有 SSL 拦截的情况下与服务器通信,而是客户端根本无法与服务器通信。另一种方法是使用一些启发式方法根据 TLS 握手的指纹来检测 TLS 客户端的类型,即密码的种类和顺序、特定扩展的使用......而 SSL 拦截代理理论上可以模拟原始ClientHello 完全没有。又见检测人在这方面的中间人在服务器端对HTTPS或者部分III TLS实施启发式在HTTPS拦截安全的影响。
归档时间: |
|
查看次数: |
2028 次 |
最近记录: |