HTTPs 在 Service Fabric with Docker 容器中不起作用



我正在开发一个自托管的.Net Core Rest API,该API将托管在Service Fabric的Docker容器中。我无法在 Service Fabric 中配置为 SSL/Https。Http似乎有效。我正在使用 HttpSys 作为 Web 服务器,而不是 Kestrel,因为我读到它不推荐用于没有反向代理的服务(如 IIS)。

这是 Web 服务器代码片段。

return WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.UseStartup<Startup>()
.UseHttpSys(
options =>
{
options.Authentication.Schemes = AspNetCore.Server.HttpSys.AuthenticationSchemes.None;
options.Authentication.AllowAnonymous = true;
}
)                  
.Build();

下面是服务清单.xml终结点代码段。

<Endpoints>      
<Endpoint Name="ServiceEndpoint" Protocol="http" Port="80" />
<Endpoint Name="ServiceEndpointHttps" Protocol="https" Port="443" Type="Input" CertificateRef="SSLCertificate" />
</Endpoints>

下面是应用程序清单环境变量代码段。

<EnvironmentVariable Name="ASPNETCORE_URLS" Value="https://*:443/;http://*:80/"/>

下面是应用程序清单.xml策略代码段。

<Policies>
<ContainerHostPolicies CodePackageRef="Code">
<RepositoryCredentials AccountName="accountname" Password="password" PasswordEncrypted="false" />
<PortBinding ContainerPort="80" EndpointRef="ServiceEndpoint"/>
<PortBinding ContainerPort="443" EndpointRef="ServiceEndpointHttps"/> 
</ContainerHostPolicies>
<EndpointBindingPolicy CertificateRef="SSLCertificate" EndpointRef="ServiceEndpointHttps" />
</Policies>

下面是应用程序清单.xml证书代码段。

<Certificates>
<EndpointCertificate Name="SSLCertificate" X509FindValue="cert thumbprint"/>
</Certificates>

最初,当我仅在当前用户\我的证书存储中拥有 SSL 证书时,我在证书部署时遇到了问题。在本地计算机\我的证书存储中部署证书后,我解决了它。通过此修复,服务似乎仅适用于端口 80 中的 HTTP 协议,而不适用于端口 443 中的 HTTPS 协议。

Service Fabric 资源管理器不会在事件日志中显示任何错误和错误。我在本地服务结构和 Azure 服务结构实例中都遇到了这个问题。

对此的任何想法/指示将不胜感激。

将 Service Fabric 用于容器和 https 可以遵循此文档。

它会将证书作为环境变量注入容器。

但是对于Linux集群来说,有一个问题。Certificates_ServicePackageName_CodePackageName_CertName_PEMCertificates_ServicePackageName_CodePackageName_CertName_PrivateKey表示的文件具有完全相同的内容。

我正在等待Azure中国支持者对此的进一步澄清,不确定这是否是中国特有的问题。

最新更新