使用 SSL 的 Android HttpListener?
Posted
技术标签:
【中文标题】使用 SSL 的 Android HttpListener?【英文标题】:Android HttpListener using SSL? 【发布时间】:2018-05-28 06:12:21 【问题描述】:我正在开发一个使用 HttpListener
类托管 Web 服务器的 android 应用。
但我需要使用SSL
证书来托管它,我在某处读到您需要将证书放在 android 设备上的特殊目录中。
但我丢失了指定确切位置的链接。
那么有人知道如何让HTTPS
在Xamarin
Android 上使用HttpListener
类吗?
编辑:
按照HttpListener with HTTPS on MonoTouch 中的建议,我已经厌倦了在Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".mono", "httplistener")
下存储.cer
和.pvk
文件,但是当我尝试访问该网址时,我没有得到任何答案,如果我更改为http,我至少会得到答案。
我在github上找到了如下源码,https://github.com/mono/mono/blob/3f779475e3fc982e312212d5dbbd86515eddfc0c/mcs/class/System/System.Net/HttpListener.Mono.cs#L73
但它只是吃掉发生的任何异常,因此无法确定是否有任何问题!
【问题讨论】:
HttpListener with HTTPS on MonoTouch的可能重复 @NicolasDusart 纠正我如果我错了,但MonoTouch
是针对 ios 而不是 android。
你有没有设法让它工作?
我放弃了,改用 web socket 服务器。
我最近实现了 HTTPListener 并通过添加防火墙规则允许通过 LAN 进行通信。不需要任何输入,一切都由 C# 代码处理。我在这里分享了解决方案的完整代码:***.com/a/58149405/983548
【参考方案1】:
你没有指出你在调用文件本身,查看 System.Net.HttpListener 的单声道代码,文件本身必须是 port number.cer,即 443.cer,如果你要监听的话443.
string dirname = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string path = Path.Combine(dirname, ".mono");
path = Path.Combine(path, "httplistener");
string cert_file = Path.Combine(path, String.Format("0.cer", port));
https://github.com/mono/mono/blob/3f779475e3fc982e312212d5dbbd86515eddfc0c/mcs/class/System/System.Net/HttpListener.Mono.cs#L64
【讨论】:
以上是关于使用 SSL 的 Android HttpListener?的主要内容,如果未能解决你的问题,请参考以下文章