gpt4 book ai didi

asp.net-core - 如何在单个 Service Fabric 群集上托管多个启用了 HTTPS 且具有唯一 SSL 证书的站点

转载 作者:行者123 更新时间:2023-12-04 18:34:09 25 4
gpt4 key购买 nike

我在 Azure 上有 Service Fabric 群集。我想使用这个集群来托管多个基于 ASP.NET Core 的站点。所有站点都必须可以通过 HTTPS(在端口 443 上)在 Internet 上访问。此外,每个站点都在不同的域上运行,因此具有唯一的 SSL 证书。有些网站甚至有通配符证书。

我了解到使用 WebListener 是在 Service Fabric 上托管基于 ASP.NET Core 的网站的推荐方法。据我所知,WebListener 应该支持通过使用请求 HTTP header 识别请求的站点来将多个站点绑定(bind)到同一个端口。这很酷,但我还没有找到有关如何将 SSL 证书绑定(bind)到站点(主机名)的信息。甚至可能吗?

如果在使用 WebListener 时无法将证书绑定(bind)到特定站点,我不知道有什么实际的方法可以实现这一点。

是否有人知道如何以一种实用的方式解决这个问题,以便以最少的工作和费用(性能或基础设施成本)将新站点添加到集群中?

我想一种方法是为每个站点使用唯一的端口,然后在 Azure 负载均衡器和/或应用程序网关上工作。这可能会变得管理起来有点复杂,甚至成本高昂(公共(public) IP 和应用程序网关并不是完全免费的)。

最佳答案

因此,刚刚创建了一个新的 ASP.Net Core WebSite,我可以看到 program.cs 文件包含 .Net Core 的特定 ICommunicationListner 实现。我将修改该监听器上的以下方法,以允许您指定应用程序根,类似于默认的 Owin 通信监听器为 WebAPI 所做的。这将允许您将多个站点绑定(bind)到单个端口。


Task ICommunicationListener.OpenAsync(CancellationToken cancellationToken)
{
var endpoint = FabricRuntime.GetActivationContext().GetEndpoint(_endpointName);

string serverUrl = $"{endpoint.Protocol}://{FabricRuntime.GetNodeContext().IPAddressOrFQDN}:{endpoint.Port}";

_webHost = new WebHostBuilder().UseWebListener()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup()
.UseUrls(serverUrl)
.Build();

_webHost.Start();

return Task.FromResult(serverUrl);
}

更改可能如下所示:
string serverUrl = $"{endpoint.Protocol}://+{endpoint.Port}/{this.appRoot}";

然后在服务 list 文件中调整端点配置以在 https 和 443 上运行
 <Endpoints>
<Endpoint Protocol="https" Name="ServiceEndpoint" Type="Input" Port="443" />
</Endpoints>

然后在 Service Fabric 应用程序 list 中添加证书(应该已经部署到 VMS),使用指纹识别要使用的证书,就像这样。




然后仍然在应用程序 list 中添加一个策略以将该证书绑定(bind)到您的服务的端点
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Web1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<EndpointBindingPolicy EndpointRef="ServiceEndpoint" CertificateRef="Cert1" />
</Policies>
</ServiceManifestImport>

编辑:
修复了服务 url 中的拼写错误(approot 的位置错误)并用 weblistener 替换了默认的 kestrel 扩展。

编辑2:
由于绑定(bind)如何与 Web 监听器一起工作,更新了服务 url 以使用通配符

关于asp.net-core - 如何在单个 Service Fabric 群集上托管多个启用了 HTTPS 且具有唯一 SSL 证书的站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39870265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com