使用来自代码的 HTTPS 但在浏览器中有效的服务器和客户端错误

Server and Client error using HTTPS from code but works in browser

运行 新创建的 IdentityServer4 Asp.Net 基于核心的服务器。它 "works" 从某种意义上说它一直在没有 HTTPS 的情况下工作,无论是在调用身份验证还是提供一些 Asp.Net MVC 视图时。我将其切换为在我的本地开发环境中使用 HTTPS,并根据 this article.

生成证书

从浏览器,它 "works"。在 Chrome 的情况下,我能够按照该文章的建议进行操作,并绕过安全警告以访问 Web 视图。但是,从 .Net 客户端我正在使用 IdentityModel NuGet 包,只是试图访问元数据 using the Discovery Endpoint 现在失败了。 服务器抛出"Failed to authenticate HTTPS connection" IOException,客户端抛出"Certificate authority is invalid or incorrect" HttpRequestException。

我猜这与浏览器中的事物是交互式的事实有关,我可以告诉它忽略警告并继续。但是在代码中,特别是在使用那个库时,它给了我那个异常并且没有继续。也许。

有什么方法可以更好地处理这种 运行 IdentityServer4/AspNetCore 使用 HTTPS 和自签名证书的情况?有什么我没有看到的可以用 DiscoveryClient 完成的事情吗?

类似,但在这种情况下重新生成证书没有帮助。我想知道从 IdentityServer / DiscoveryClient 角度是否还有其他原因或见解。

很可能错误“证书颁发机构无效或不正确”是因为客户端不信任 server.You 的证书可以将您创建的证书安装到您计算机中的根证书颁发机构(其中客户端是运行宁).

  1. 启动 MMC (mmc.exe),为计算机帐户添加证书管理单元,并管理本地计算机的证书。
  2. Select 文件 > Add/Remove 管理单元。
  3. 单击“证书”管理单元,然后单击“添加”。
  4. 在证书管理单元显示中,select 计算机帐户并单击下一步。
  5. Select 本地计算机并单击“完成”,然后单击“确定”。
  6. 在左侧导航窗格中,展开证书(本地计算机)。
  7. 右键单击受信任的根证书颁发机构和select所有任务 > 导入。
  8. 证书导入向导打开。 10.Click接下来。 11.Browse 选择您创建的证书,然后单击“下一步”。
  9. Select 将所有证书放入以下存储区:受信任的根证书颁发机构并单击下一步,然后单击完成。

如果您 运行ning on iisexpress,它会 运行 在您的 credentials.So 下,您必须在 第 4 步 [=] 中将其添加到用户存储中50=]。如果您在 IIS 下 运行ning,则必须将证书添加到计算机。您也可以导入到两个商店

select 用户存储和计算机存储

添加两个管理单元后

导入证书