【问题标题】:SSL Intercepting ProxysSSL 拦截代理
【发布时间】:2020-04-28 10:12:25
【问题描述】:

我有一个客户想要使用拦截代理来解密所有传出的流量。 他们不想使用透明代理,因为安全策略规定必须解密/拦截所有传出的流量。 但我的问题是我的客户端验证谁是服务器,而服务器验证谁是客户端。 我们不想将客户 CA 添加到服务器。 那么代理去特定服务器是否可以使用客户端密钥?我的意思是将客户端密钥复制到代理,以便在拦截发生后代理使用客户端密钥对服务器进行加密,因此服务器根本不知道它正在与代理交谈。

如果您将客户端私钥提供给拦截代理服务器,那么使用 SSL 拦截代理是否可以在拦截后重新加密流量,以便连接服务器仍然认为流量来自源客户端证书?

A 是客户 B 是代理拦截 C是服务器 A -> B -> C

1) 客户端与代理对话 甲->乙

2) B -> B Proxy拦截解密然后用自己的证书重新加密,然后与服务器对话

问题 这种重新加密是否可以使用客户端的私钥完成,以便服务器 C 与客户端对话而不是拦截代理?

【问题讨论】:

    标签: ssl encryption proxy-server


    【解决方案1】:

    是的,这是可能的。 客户端和服务器都不需要显式地与代理通信,分别向代理的 IP 地址发送数据包。

    您只需将代理放在服务器和客户端“之间”的网络级别。

    在这种情况下,拦截代理作为“透明代理”运行(例如参见mitmproxy)。在这种模式下,您只需通过代理重定向流量,例如通过 iptables 规则。

    当然,客户端必须信任拦截代理使用的证书(或者像一些易受攻击的客户端一样,只接受任何服务器证书)。

    【讨论】:

    • 感谢罗伯特的输入,非常棒。但我遇到的问题是客户不想关闭 SSL 拦截代理,因为它是一种安全策略。我想知道是否可以将客户端密钥复制到代理,因此在拦截发生后它使用此密钥加密到服务器的流量,因此服务器仍然认为它只是它正在与之交谈的客户端?我对拦截代理不太熟悉。
    • @cloonacool 一些代理支持“代表”原始客户端使用客户端证书。但是,如果多个用户使用代理,这可能会出现问题,因为很难仅将客户端证书用于一个特定的客户端。我曾经使用过客户端证书的唯一代理是“Fiddler”,但我相信其他人也支持这个。
    猜你喜欢
    • 2013-11-10
    • 2017-03-19
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2011-08-30
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多