【问题标题】:HttpListener (.NET Core) doesn't work with https on windows dockersHttpListener (.NET Core) 不适用于 windows docker 上的 https
【发布时间】:2020-02-21 14:13:55
【问题描述】:

.Net Core 版本:3.1 操作系统:Windows 10 (1903) Docker 版本:19.03.5

嗨

我正在对 docker 和 .Net Core 进行我的第一个概念验证,以便研究将我们所有的基础设施转移到 .Net Core 的 docker 中的可能性。我试图构建一个简单的 http 监听器,它会返回一个 hello world 页面。 我发现了问题 https://github.com/dotnet/core/issues/3072 很有帮助。

简而言之,我正在尝试打开两个 http 侦听器: http://+:1234 https://+:12345

为此,主机操作系统上有两个 URL ACL 保留:

Reserved URL            : http://+:1234/
    User: \Everyone
        Listen: Yes
        Delegate: No
        SDDL: D:(A;;GX;;;WD)

Reserved URL            : https://+:12345/
    User: \Everyone
        Listen: Yes
        Delegate: No
        SDDL: D:(A;;GX;;;WD)

还有适用于 https 端口的有效证书:

SSL 证书绑定:

IP:port                      : 0.0.0.0:12345
Certificate Hash             : a05077849c0835b0db2b16656cd42651122f283d
Application ID               : {00000000-0000-0000-0000-000000000000}

...

进一步将两个端口转发到容器:

docker run --user ContainerAdministrator -p 1234:1234 -p 12345:12345 --name=https_container https_server_image

并且容器在 ContainerAdministrator 下运行。

HttpListener 在 http 端口上运行良好。 例如尝试加载“http://localhost:1234/”工作正常(示例代码只返回“Hello word”html 页面)。 尝试访问“https://localhost:12345/”上的 SSL 连接在 Chrome/Edge 中的“ERR_CONNECTION_RESET”、Mozilla 中的“PR_CONNECT_RESET_ERROR”浏览器中失败。

有趣的是,两个 HttpListener 实例在容器中启动都没有问题,也没有任何异常。 当然,相同的测试应用程序在没有 docker 容器化的情况下直接在主机上启动时就像一个魅力。

所以我想知道我在这里错过了什么吗? 这是预期的行为吗? 提前感谢您的帮助!

【问题讨论】:

    标签: windows docker .net-core


    【解决方案1】:

    根据.NET Coreforum中的“官方”回答:

    “一般而言,HttpListener 类是我们从 .NET Framework(仅限 Windows)移植到 .NET Core 的遗留组件。但 Linux 不支持 HTTPS 功能。请参阅:#19752

    如果您需要跨平台的 HTTP/HTTPS 服务器,我们建议您使用 ASP.NET Core。 “Kestrel”组件完全支持 HTTPS,并且可以跨平台(Windows/Linux/Mac)使用。 见:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多