C# 在C代理服务器中构建HTTPS支持

C# 在C代理服务器中构建HTTPS支持,c#,.net,proxy-server,C#,.net,Proxy Server,我正在用C语言构建一个代理服务器,我试图弄明白如何支持HTTPS请求,并通读它们。您能推荐一些文章、教程或开源项目,让我了解如何实现此功能的更多信息吗?如果通读它们意味着解密请求的内容,那么答案是您不能。你所描述的是一个所谓的中间人攻击米特。显然,SSL是受保护的 现在,如果您在某种企业环境中使用代理控制客户端,或者您正在创建Fiddler的竞争对手,那么您可以通过让客户端信任您的证书来颠覆SSL,然后使用标准的.NET crypto API实现您的MITM 注:关于这种方法的一个优秀例子,请看

我正在用C语言构建一个代理服务器,我试图弄明白如何支持HTTPS请求,并通读它们。您能推荐一些文章、教程或开源项目,让我了解如何实现此功能的更多信息吗?

如果通读它们意味着解密请求的内容,那么答案是您不能。你所描述的是一个所谓的中间人攻击米特。显然,SSL是受保护的

现在,如果您在某种企业环境中使用代理控制客户端,或者您正在创建Fiddler的竞争对手,那么您可以通过让客户端信任您的证书来颠覆SSL,然后使用标准的.NET crypto API实现您的MITM


注:关于这种方法的一个优秀例子,请看带有反射器的小提琴手:

更好的是,用小提琴。www.fiddler2.com/fiddler/dev/如果您能描述您的确切需求,将非常有用。例如,为什么要编写代理而不是相对简单的浏览器扩展?我不确定SSL连接的时间意味着什么。上一篇文章也有一个打字错误。我只需要计算从webrowsercontrol中呈现的对象发出的HTTPS调用与服务器建立SSL握手所需的时间。目前,我依靠Passthrough应用程序获取请求的每个时间组件的时间,但问题是您无法区分常规连接时间和SSL握手时间。这就是为什么我尝试了代理路由,但这就解决了整个证书问题。也许有一些我没有看到的明显而简单的东西。您是希望能够监控生产中的SSL开销,还是现在就想要一个数字?在第二种情况下,您可以简单地测量使用SSL和不使用SSL的调用的时间吗?那么不同之处就是SSL开销。在第一种情况下,我认为您需要编写大量代码。net是否会告诉您,如果使用HTTP类,SSL握手需要多长时间?如果没有,看起来您必须在原始TCP上构建自己的HTTP层