我正在基于.net核心的HttpListener设置一个简单的服务器,该服务器需要在MacOS上运行。在http上效果很好,但我需要它在https(端口443上运行。尝试了自定义端口,但仍然没有成功)
在Windows上,它与“ netsh add iplisten”一起使用,并将证书与“ netsh add sslcert”绑定。它对http和https都很好。
但是,在Mac OS上,我发现的第一件事是为本地主机“ ifconfig lo0别名127.0.0.9 up”设置别名,这样就可以启动httplistener。
这行得通,每当我向127.0.0.9发出HTTP请求时,我都会在浏览器中硬编码响应。
Https仍然不起作用。所以我尝试绑定证书。 我用openssl创建了一个证书=>得到了一个自签名的.p12证书。 使用“ httpcfg -add -port 443 -p12 server.p12 -pwd mypassword” 那行得通,因为我可以看到“〜/ .config / .mono / httplistener /”中出现了2个文件,分别为443.cer和443.pvk。
但是,如果我导航到https://127.0.0.9,则会在浏览器中重置错误连接。
我不知道还有什么尝试,而且找不到任何答案。 是否有人尝试在Mac OS上执行此操作?
var ipAddress = "127.0.0.9";
var httpListener = new HttpListener();
var httpPrefix = string.Format("http://{0}/", ipAddress);
var httpsPrefix = string.Format("https://{0}/", ipAddress);
httpListener.Prefixes.Add(httpPrefix);
httpListener.Prefixes.Add(httpsPrefix);
httpListener.Start();
WaitForNewRequest(httpListener);
在“ WaitForNewRequest(httpListener)”方法中,我只编写了一个硬编码的“ hello world”响应,并等待下一个请求。没什么复杂的。
谢谢!
答案 0 :(得分:0)
1024
以下的端口具有特权,您需要以root
的身份运行应用才能打开它们。
如果您需要在生产环境中使用443
,强烈建议使用apache
或nginx
来监听SSL
端口并将流量代理到您的{{1 }}代码。