在.NET Compact Framework 3.5上实现TLS 1.2



我几乎花了整整一个工作日的时间来研究如何最好地完成标题中提到的任务。

以下是我目前发现的情况:

  1. 至少有一个库可以为.NET CF提供开箱即用的TLS 1.2。不利的一面是:他们收取执照费。如果有人对这个简单的解决方案感兴趣,Rebex Library

  2. 有几个SSL/TLS库允许与较低级别的服务器进行通信。我的方法是为.NET Compact Framework编译BouncyCastle库,这是我完成的。

从这里开始,我发现了一篇文章,向我展示了如何实现BouncyCastle接口以及如何将这些部分组合在一起。有关更多信息,请参阅使用BouncyCastle库在C#中进行HTTPS调用。这就是我的代码现在的样子。

我完成了与服务器的连接,并发送了一个请求,我也得到了预期的响应。然后我想利用HttpWebRequest类,这样我就不必自己编写HTTP请求的代码了。或者我是这么想的。不可能。HttpWebRequest没有公共构造函数。因此,我不能继承该类。例如,我也尝试过使用RestSharp,但这也只是依赖于WebRequest类。基本上,所有可用的HTTP客户端都使用Uri,然后自己打开流。似乎没有一个人接受已经开放的流并对其进行写入,或者提供插入一些加密API来使用,而不是平台默认提供的内容(当然,除了提到的Rebex库(。

所以我的问题是:有没有任何HTTP客户端可以向已经打开的流写入HTTP命令,或者至少为我提供一个字符串表示我在上面设置的内容?或者,即使已经有很多这样的实现,我也必须自己编写类似的代码吗?还是我完全错过了一点,可以更容易地解决?

根据您的研究,您能在CF应用程序中设置一种代理吗?

在应用程序的其余部分使用HttpWebRequest和响应,但将它们引导到您的内部代理(127.0.0.1(

代理将处理TLS连接,然后它使用套接字侦听器来拦截来自HttpWebRequest的HTTP请求,但不需要解析它们,只需将它们沿着已经打开的套接字转发即可。同样,返回的TCP流量将从实际主机发送回本地套接字(同样,它不会被解析,只是被视为缓冲区(。

最新更新