如何在Mac OS上使HttpListener监听443?

时间:2019-01-29 14:33:56

标签: c# macos https .net-core httplistener

我正在基于.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”响应,并等待下一个请求。没什么复杂的。

谢谢!

1 个答案:

答案 0 :(得分:0)

1024以下的端口具有特权,您需要以root的身份运行应用才能打开它们。

如果您需要在生产环境中使用443,强烈建议使用apachenginx来监听SSL端口并将流量代理到您的{{1 }}代码。