我正在开发一个自托管的.Net Core Rest API,它将托管在Service Fabric中的Docker Container中。我无法在Service Fabric中配置SSL / Https。 Http似乎有效。我使用HttpSys作为Web服务器,而不是Kestrel,因为我读过它不建议选择没有反向代理(如IIS)的服务。
以下是网络服务器代码段。
from itertools import product
...
test = test()
for i, j in product(test, repeat=2):
print(i,j)
这是ServiceManifest.xml Endpoints代码段。
return WebHost.CreateDefaultBuilder(args)
.UseApplicationInsights()
.UseStartup<Startup>()
.UseHttpSys(
options =>
{
options.Authentication.Schemes = AspNetCore.Server.HttpSys.AuthenticationSchemes.None;
options.Authentication.AllowAnonymous = true;
}
)
.Build();
这是ApplicationManifest EnvironmentVariable片段。
<Endpoints>
<Endpoint Name="ServiceEndpoint" Protocol="http" Port="80" />
<Endpoint Name="ServiceEndpointHttps" Protocol="https" Port="443" Type="Input" CertificateRef="SSLCertificate" />
</Endpoints>
这是ApplicationManifest.xml Policies snippet。
<EnvironmentVariable Name="ASPNETCORE_URLS" Value="https://*:443/;http://*:80/"/>
这是ApplicationManifest.xml Certificates代码段。
<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>
最初,当我在CurrentUser \ My Certificate Store中拥有SSL证书时,我遇到了证书部署问题。我在LocalMachine \ My Certificate Store中部署证书后解决了这个问题。通过此修复,Service似乎仅在端口80中使用HTTP协议,而不在端口443中使用HTTPS协议。
Service Fabric Explorer也不会在“事件日志”中显示任何错误和错误。我在Local Service Fabric和Azure Service Fabric实例中都遇到此问题。
对此的任何想法/指示都将不胜感激。
答案 0 :(得分:0)
将Service Fabric用于容器和https可以遵循此doc。
它将证书作为环境变量注入到容器中。
但是对于linux集群,有一个问题。 Certificates_ServicePackageName_CodePackageName_CertName_PEM 和 Certificates_ServicePackageName_CodePackageName_CertName_PrivateKey 表示的文件具有完全相同的内容。
我正在等待Azure中国的支持者对此进行进一步的澄清,不确定是否是中国特定的问题。