gpt4 book ai didi

c# - C# Web 代理中的 SSL;如何确定请求是否为 SLL?

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:46 24 4
gpt4 key购买 nike

我从头开始构建了一个 Web 代理(使用 SocketNetworkStream 类)。我现在正尝试为它实现 SSL 支持,以便它可以处理 HTTPS 请求和响应。我很清楚我需要做什么(使用 SslStream),但我不知道如何确定我从客户端收到的请求是否是 SSL。

我已经就此主题搜索了几个小时,但一直找不到合适的解决方案。

在我这样做之后:

TcpListener pServer = new TcpListener(localIP, port);
pServer.Start(256);
Socket a_socket = pServer.AcceptSocket();

我如何知道我是否需要使用 SslStreamNetworkStream 读取信息?

最佳答案

此时客户端将向您发送一个CONNECT 方法请求,您只需重定向流量即可。

示例连接:

CONNECT www.google.com:443 HTTP/1.1

看到这个之后就切换到数据重定向模式。您无法拦截或读取数据,因此无论如何您都不必担心 SSLStream,您不会碰它。

但是,如果您想要 MITM(中间人),那么您需要切换到 SSL,否则只需重定向到达目标的任何内容 URL 和端口,仅此而已。

显然,如果您拦截请求,客户端浏览器将弹出一个 SSL 证书异常。

关于c# - C# Web 代理中的 SSL;如何确定请求是否为 SLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com