c# - 在 .NET Compact Framework 3.5 上实现 TLS 1.2
问题描述
我几乎花了一整天的时间来弄清楚如何最好地完成标题中提到的任务。
这是我到目前为止发现的:
至少有一个库为 .NET CF 提供开箱即用的 TLS 1.2。缺点:他们收取许可证费用。如果有人对这个简单的解决方案感兴趣,Rebex Library
有几个 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 流量将从真实主机发送回本地套接字(同样它不被解析,只是被视为缓冲区)。
推荐阅读
- python - IO Errno 13 权限被拒绝
- excel - 根据条目表 1 展开表 2 - 导致公式不一致
- ios - 如何在 ios 上限制未经授权访问 Google Directions Api Http 请求?
- arrays - 在 Laravel 中显示数组中的多个图像
- linux - KeyError: 'ifname' in convert an OpenWRT tar.gz to NetJSON
- swift - 使用 SSZipArchive 解压缩下载的 zip 文件
- mysql - MySql 约束问题
- java - Java中方法的向上转换和向下转换混淆
- c# - 从特定列中读取 Excel 中的 EPPlus 数据表
- html - 试图弄清楚