ServiceFabric 本地集群中的 HTTPS 通信

HTTPS communication in ServiceFabric Local Cluster

这是我的设置

一个 IdentityServer 4 作为无状态的可靠 ASP.NET 核心服务。 作为可靠 ASP.NET 核心服务的 WebAPI。

将它们与 JS 客户端一起使用,它现在可以使用 HTTP。问题出在 HTTPS 上。 WebAPI 需要通过 https [is4URL].well-known/openid-configuration 请求 openID 配置。我收到此错误

System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'https://localhost:9999/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'https://localhost:9999/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

任何人都可以帮助我使用 SF Local Cluster Manager 在本地主机上完成这项工作吗?

谢谢

这是我的两分钱,但需要验证...

我假设您已经使用以下文章或类似文章创建了自签名证书,但该证书具有相同的属性。

https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-configure-ssl-certificate

这意味着无法通过实际的 CA 验证证书。当然,使用自签名证书这是不可能的。

现在,当您将证书上传到 Azure 应用服务时,它会安装在 CurrentUser - MyStore 中。使用自签名证书,还需要安装在 LocalMachine Root 存储中。

这是因为机器的证书颁发机构可以验证该证书是否有效。 (如果我错了,安全专家可能会纠正我,但那是我的理论)。我在本地托管的 windows 服务器上进行了相同的设置,其中自签名证书安装在根证书存储以及个人存储中,并且该应用程序可以正常工作。这就是我相信会发生这种情况的原因。

所以这部分需要验证。以下文章介绍了如何在 Azure 应用服务中执行此操作。

https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-configure-ssl-certificate-portal

再说一次,这只是一个需要验证的理论。 :)

编辑:

我刚刚测试了一下,是这样的。在云服务中,您可以按照上面的第二个 link 所示进行操作,并创建 Web 作业,在适当的存储中安装证书。

不幸的是,对于 Azure 应用服务,您无权访问根存储。它必须安装在 CurrentUser 的个人商店中。这意味着自签名证书将不起作用,您必须购买真正的证书。 :( 我认为这是对 Microsoft 的真正贬低。为什么我需要为我的 dev/test 环境支付真实证书?(Rant Over)

对于 Service Fabric,您需要了解如何在根存储和个人存储中安装证书(如果可能的话)。以下是可能有用的链接

http://ronaldwildenberg.com/running-an-azure-service-fabric-cluster-locally-on-ssl/

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-security-update-certs-azure

希望这对您有所帮助。