运行新创建的基于IdentityServer4 Asp.Net Core的服务器。它的工作原理是它在没有HTTPS的情况下工作,无论是在验证调用还是提供一些Asp.Net MVC视图。我将其切换为在本地开发环境中使用HTTPS,根据this article生成证书。
从浏览器中,它“有效”。我能够像Chrome那样的文章建议并绕过安全警告来获取Web视图。但是,从.Net客户端我使用IdentityModel NuGet包,只是尝试访问元数据using the Discovery Endpoint现在失败了。 服务器提供“无法验证HTTPS连接”IOException,并且客户端提供“证书颁发机构无效或不正确”HttpRequestException。
我猜这与浏览器中的东西是交互式的事实有关,我可以告诉它忽略警告并继续。但是在代码中,特别是使用该库,它给了我异常而不是继续。也许
有没有办法处理这种使用HTTPS和自签名证书更好地运行IdentityServer4 / AspNetCore的场景?有没有可以用DiscoveryClient做的事情,我没有看到?
This question类似,但在这种情况下重新生成证书并没有帮助。我想知道IdentityServer / DiscoveryClient角度是否还有其他原因或见解。
答案 0 :(得分:5)
很可能是错误"证书颁发机构无效或不正确"是因为客户端无法信任服务器的证书。您可以将您创建的证书安装到您的计算机(客户端正在运行的位置)的根证书颁发机构。
如果您在iisexpress上运行,它将在您的凭据下运行。因此您必须在步骤4 上将其添加到用户存储。如果您在IIS下运行,则必须将证书添加到计算机。您还可以导入到两个存储