启动 Kestrel 服务器时未使用应用程序清单中的端点证书



我正在阅读本文,尝试使用清单中指定的证书运行https端点。

到目前为止,我只通过 VS 在我的本地开发集群上尝试过这个,所以我不知道这是否是问题所在,可能还需要注意,这样做的目标集群是一个独立的集群。

无论如何,当服务尝试启动时,它会出现一个错误:

无法配置 HTTPS 终结点。未指定服务器证书,并且找不到默认开发人员证书。

我的清单的相关部分如链接中所述:

服务清单

<Resources>
<Endpoints>
<Endpoint Name="EndpointName" Protocol="https"/>
</Endpoints>
</Resources>

应用程序清单:

<Policies>
<EndpointBindingPolicy EndpointRef="EndpointName" CertificateRef="TestCert1" />
</Policies>
...
<Certificates>
<EndpointCertificate X509FindValue="ad a5 9c 03 44 5a 40 1a 5e 2d f2 72 24 93 30 e8 b0 85 b0 bb" Name="TestCert1" />
</Certificates>

在红隼启动上运行的代码如下所示:

protected override IEnumerable<ServiceReplicaListener> CreateServiceReplicaListeners()
=> new[]
{
new ServiceReplicaListener(
serviceContext => new KestrelCommunicationListener(
serviceContext,
"EndpointName",
(url, listener) =>
{
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Opening on {url}");
return new WebHostBuilder()
.UseKestrel()
.ConfigureServices(
services => services
.AddSingleton(serviceContext)
.AddSingleton(StateManager)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseUniqueServiceUrl)
.UseUrls(url)
.Build();
})),
};

当我只是使用HTTP时,一切都很好。 关于我做错了什么的任何想法?

另外,是否支持此机制?我问的原因是因为我还找到了端点的类型定义,该定义说不使用"证书"属性,因为它不受支持

应用程序清单看起来不错,这就是我在 Service Fabric 中为 WebAPI 配置 HTTPS 终结点的方式。我还没有配置Kestrel,但是您遇到的错误看起来像是错误的配置问题。

我希望这有所帮助。这是Microsoft使用不同方法的教程。 使用 Kestrel 将 HTTPS 终结点添加到 ASP.NET 核心 Web API 前端服务

相关内容

最新更新