SSL 拦截代理

标签 ssl encryption proxy-server

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

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

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

1) 客户端与代理对话 A -> B

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

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

最佳答案

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

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

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

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

关于SSL 拦截代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59687125/

相关文章:

java - Spring Boot 连接到 AWS RDS MySQL - SSLHandshakeException : Received fatal alert: unknown_ca

c# - 使用带有 Coldfusion 和 .NET/BouncyCaSTLe 的 Blowfish 加密和解密数据

php - 如何加密/解密 PHP GET 参数?

php - 使用 php 加密大文件的最佳方法

proxy-server - 在开发环境中切换主机文件

ios - 如何在 iOS 中验证(和要求)自签名证书

security - 使用 HTTPS,URL 和请求 header 是否像请求正文一样受到保护?

用于推送通知 (Pushwoosh) 的 iOS SSL 证书配置,生成时出错

ssl - 无法记录使用 SSL 证书的 https 网站

python - 家庭作业 - Python 代理服务器