服务器和客户端错误使用代码中的HTTPS但在浏览器中工作

Den*_*elu 0 https kestrel-http-server asp.net-core identityserver4

运行新创建的基于IdentityServer4 Asp.Net Core的服务器.它"工作"的意义是它在没有HTTPS的情况下工作,无论是在进行身份验证的调用中还是为了提供一些Asp.Net MVC视图.我将其切换为使用HTTPS进行本地开发环境,根据本文生成证书.

从浏览器,它"工作".我能够像Chrome那样的文章建议并绕过安全警告来获取Web视图.但是,从.Net客户端我使用IdentityModel NuGet包,只是尝试使用Discovery Endpoint访问元数据现在失败了.服务器提供"无法验证HTTPS连接"IOException,并且客户端提供"证​​书颁发机构无效或不正确"HttpRequestException.

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

有没有办法处理这种使用HTTPS和自签名证书更好地运行IdentityServer4/AspNetCore的方案?有没有可以用DiscoveryClient做的事情,我没有看到?

这个问题很相似,但在这种情况下重新生成证书并没有帮助.我想知道IdentityServer/DiscoveryClient角度是否还有其他原因或见解.

Roh*_*ith 5

最可能的错误"证书颁发机构无效或不正确"是因为客户端无法信任服务器的证书.您可以将您创建的证书安装到计算机的根证书颁发机构(客户端运行的位置).

  1. 启动MMC(mmc.exe),为计算机帐户添加"证书"管理单元,并管理本地计算机的证书.
  2. 选择"文件">"添加/删除管理单元".
  3. 单击"证书"管理单元,然后单击"添加".
  4. 在"证书"管理单元显示中,选择"计算机帐户"并单击"下一步".
  5. 选择Local Computer,然后单击Finish,然后单击OK.
  6. 在左侧导航窗格中,展开"证书(本地计算机)".
  7. 右键单击"受信任的根证书颁发机构",然后选择"所有任务">"导入".
  8. "证书导入向导"将打开.10.单击下一步.11.浏览您创建的证书,然后单击"下一步".
  9. 选择将所有证书放在以下存储中:受信任的根证书颁发机构,然后单击"下一步",再单击"完成".

如果您在iisexpress上运行,它将在您的凭据下运行.因此,您必须在步骤4将其添加到用户存储.如果您在IIS下运行,则必须将证书添加到计算机.您还可以导入到这两个存储

选择用户存储和计算机存储

用户帐户商店

添加两个snappins后

证书snappins

导入证书

导入证书