【问题标题】:Does HTTP.sys web server implementation in ASP.NET Core really support Server Name Indication (SNI)?ASP.NET Core 中的 HTTP.sys Web 服务器实现是否真的支持服务器名称指示 (SNI)?
【发布时间】:2022-12-11 05:06:01
【问题描述】:

服务器名称指示是一个很好的功能,在 Http.sys 内核模式驱动程序和 IIS 中运行良好。但是如何让它与 ASP.NET Core 中的 HTTP.sys Web 服务器实现一起工作呢? https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/httpsys?source=recommendations&view=aspnetcore-6.0 上的文档明确指出支持带有 SNI 的 HTTPS,但我不知道如何去做。 我的问题:在一台服务器上我有:

  • 在 IIS 中运行的 HTTPS 网站;
  • 运行 HTTP.sys 实现的 ASP.NET Core 应用程序。

所有站点和应用程序都需要侦听 443 端口并使用单独的 SSL 证书。 IIS 中的 SNI 配置很容易通过 Require Server Name Indication 选项完成。由于 SNI,每个站点都可能有自己的证书并在单个 443 端口上侦听。 但是应用程序呢?我可以使用 UrlPrefixes 属性绑定它:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseHttpSys(options =>
            {
                options.UrlPrefixes.Add("https://example.com:443");
            });
            webBuilder.UseStartup<Startup>();
        })

但是我不能在这里指定证书。 我知道可以指定证书netsh.exe工具:

netsh http add sslcert ipport=<IP>:<PORT> certhash=<THUMBPRINT> appid="{<GUID>}"

但它会覆盖 IIS 中的证书绑定,并且网站会停止通过 HTTPS 工作。只能为每个 IP/端口组合指定一个证书,因此我不能在此处指定多个证书。但正如 SNI 支持所暗示的那样,我需要拥有多个证书。 所以标题中的问题仍然存在:ASP.NET Core 中的 HTTP.sys Web 服务器实现是否真的支持服务器名称指示(SNI)?如何?

我尝试使用 Kestrel 配置选项提供证书,但它们显然在我使用 Http.sys 时不起作用:

                    webBuilder.ConfigureKestrel(serverOptions =>
                    {
                        serverOptions.ConfigureEndpointDefaults(listenOptions =>
                        {
                            listenOptions.UseHttps("c:\\mycert\\cert.pfx", "pwd");
                        });
                    });

【问题讨论】:

    标签: asp.net-core sni http.sys


    【解决方案1】:

    netsh http add 命令还有其他变体,您应该使用它来将您的证书绑定到域。

    netsh http add sslcert hostnameport=example.com:443 ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2011-07-04
      • 2012-07-26
      • 2017-04-13
      • 2012-09-03
      相关资源
      最近更新 更多