服务结构上的 https 请求返回“无法安全连接到此页面”
Posted
技术标签:
【中文标题】服务结构上的 https 请求返回“无法安全连接到此页面”【英文标题】:https request on Service fabric returns a "Can’t connect securely to this page" 【发布时间】:2019-12-03 15:22:30 【问题描述】:我有一个 Asp.net MVC 应用程序,我在 docker 中进行了容器化并部署在 Service Fabric 上。该应用程序与 HTTP 完美配合,但在尝试启用 HTTPS 时,服务会以 无法安全连接到此页面 进行响应 Fabric 集群上已安装通配符证书。 DockerFile 看起来像
FROM mcr.microsoft.com/windows/servercore:1803
ARG source
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
WORKDIR /inetpub/wwwroot
COPY $source .
RUN Add-WindowsFeature Web-Server; `
Add-WindowsFeature NET-Framework-45-ASPNET; `
Add-WindowsFeature Web-Asp-Net45;
HEALTHCHECK --retries=5 --interval=100s --start-period=10s CMD curl --fail http://localhost || exit 1
EXPOSE 80
服务清单具有以下端点
<Resources>
<Endpoints>
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Name="BookingApiServiceTypeEndpoint" UriScheme="https" Protocol="https" Type="Input" Port="61650" />
</Endpoints></Resources>
应用程序清单具有以下 ServiceManifestImport
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="BookingApiServicePkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<ContainerHostPolicies CodePackageRef="Code" AutoRemove="false" UseDefaultRepositoryCredentials="false" ContainersRetentionCount="2" RunInteractive="true">
<PortBinding ContainerPort="80" EndpointRef="BookingApiServiceTypeEndpoint" />
<HealthConfig IncludeDockerHealthStatusInSystemHealthReport="true" RestartContainerOnUnhealthyDockerHealthStatus="false"/>
</ContainerHostPolicies>
<EndpointBindingPolicy EndpointRef="BookingApiServiceTypeEndpoint" CertificateRef="HttpsCert" />
</Policies></ServiceManifestImport>
服务标签为
<Service Name="BookingApiService" ServiceDnsName="bookingapi.dutchhub.com" ServicePackageActivationMode="ExclusiveProcess">
<StatelessService ServiceTypeName="BookingApiServiceType" InstanceCount="1">
<SingletonPartition />
</StatelessService></Service>
和证书标记为
<Certificates>
<EndpointCertificate X509FindValue="[HttpsCertThumbprint]" Name="HttpsCert"/> </Certificates>
【问题讨论】:
【参考方案1】: 将PortBinding
更改为目标端口 443
将 IIS 配置为使用端口 443 和有效证书
更改 dockerfile 以公开端口 443
在负载均衡器上打开端口 443
更多信息在this walkthrough
【讨论】:
你的意思是容器中的 IIS 吗? 所以容器和fabric集群都需要安装证书? 我相信只有容器需要它,除非你也在不使用容器的情况下运行服务。以上是关于服务结构上的 https 请求返回“无法安全连接到此页面”的主要内容,如果未能解决你的问题,请参考以下文章