没有SslStream的SSL,因为我想通过SOCKS5代理连接

时间:2011-05-19 23:11:44

标签: c# encryption ssl socks

背景信息: C#中的程序写入

我现在正在开发一个程序,通过SOCKS5代理连接(从头开始编码。运行良好。),但我也想(通过该代理)通过SSL与DESTINATION进行通信。

我已经做了一些研究,谷歌搜索了很多次,并得出结论SslStream不适合我的情况。我需要先通过代理验证SSL,然后在收到密钥后开始发送加密数据包。

问题:

如何在C#中使用TLS加密我的数据包?出于某种原因,我根本无法弄明白。我被卡住了! :(

甚至REQUEST表示SSL证书所需的原始语法是什么?

2 个答案:

答案 0 :(得分:1)

您可能希望了解开源Bouncy Castle cryptography library中的TLS实现。如果它不能按原样工作,你可以将其破解成你需要的东西。如果您想深入了解规范本身,您会发现它为IETF RFC 5246

正如您可能已经发现的那样,执行连接设置工作的任何部分都会让您无法使用WebRequest类系列来处理协议工作的HTTP部分。这给我留下了两个我可以看到的选项:自己做HTTP(我在网上找到了trivial example HTTP client),或者更改了当前的用户代理服务器设置

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000001
"ProxyServer"="socks=socks.example.net:1080"

然后使用WebRequest类正常发送请求。

答案 1 :(得分:0)

我想向您提供我们的SecureBlackbox产品SSLBlackbox包。在众多其他组件中,它有一个基于套接字的简单SSL客户端组件,可以通过不同的代理(SOCKS,HTTPS CONNECT)连接,并支持SSL / TLS的所有功能,最高可达TLS 1.2。如果需要更多控制,可以使用任何自定义套接字,而不仅仅是内置套接字支持。这使您可以使用组件来保护不通过套接字的流量(鸽子邮件也可以通过这种方式保护)。

HTTPS客户端可用并包含在SSLBlackbox中。