ssl - 从 IdServer 成功获取 token 但出现证书错误

标签 ssl .net-core postman certificate identityserver4

我有 created a trusted certificate如下(清理潜在的预垃圾)。在那期间,我收到弹出窗口告诉我,如果这是一个根证书,一群疯狂的驴子可以做坏事。最后一条命令确认我有工作证书。我什至运行了两次命令以验证清理也会产生警告,正如预期的那样。

dotnet dev-certs https --clean
dotnet dev-certs https --trust
dotnet dev-certs https --verbose
我没有imported any PFX-files据我了解,在 localhost 实例的开发中工作并不需要这样做。控制台中的信息似乎证实了这一点,让我知道证书已正确生成。运行dotnet dev-certs http --check不产生警告(也不确认,结果中没有内容)。

The HTTPS developer certificate was generated successfully.
A valid HTTPS certificate is already present.


然后我执行了对我的 token 分配器端点的调用,也得到了预期的回复。它来自 localhost:5001/connect/token 上的安全 HTTPS 并包含所有重要部分。
{
  "access_token": "eyJhbGciO...Ow7EEkA",
  "expires_in": 3600,
  "token_type": "Bearer",
  "scope": "myapi.read"
}
困扰我的是带有红色图标的警告和文本无法验证第一个证书。
enter image description here
我已经确定 disable SSL checkingturned off CA Certificated (尽管我没有在该菜单中添加任何客户端证书。谷歌搜索给了我一堆与 Ubuntu 和/或 MacOs 相关的问题,但我基于一个很好的旧 Win10,所以那些结果无关紧要。
我是否完全误解了这种方法,或者可能混淆了一些概念?如果没有,我该怎么做才能进一步排除故障?

最佳答案

我对此进行了一些研究。dotnet dev-certs https --trust命令只是创建/确保一个新的 localhost 证书(使用 friend 名称 ASP.NET Core HTTPS 开发证书)并将其放入信任根存储中。
然而,IIS Express 服务器不会自动使用它。它仍然使用第一次运行 APS.NET Core Web 应用程序时创建的证书( friend 名称是 localhost)。如果从信任根存储中删除此证书,您将收到证书错误。
你有几个选项来解决这个问题。

  • Reset the IIS Express cert.
  • 将 IISExpress 使用的证书切换到您刚刚创建的证书,您可以使用下面的 PowerShell 命令并按照 this link 进行检索。 .

  • Get-ChildItem -path cert:\currentUser\My | Select-Object FriendlyName, subject, Thumbprint

    关于ssl - 从 IdServer 成功获取 token 但出现证书错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68243418/

    相关文章:

    c# - Entity Framework Core 2.1,使用代码优先迁移重命名表而不删除和创建新表

    javascript - Jmeter预请求脚本设置HTTP header 的值

    asp.net-web-api - ASP.NET 核心 HttpGet 单一 Web API

    windows - 为 XAMPP 启用 SSL 后 Apache 无法启动

    git - Ubuntu git : fatal: unable to access gnutls_handshake() failed: A TLS fatal alert has been received

    apache - 与远程服务器的 SSL 握手期间出错

    wordpress - WooCommerce 休息 API "woocommerce_rest_cannot_create"

    ruby - ruby docker 图像中的过期 ca 证书(2.6.8-bullseye)

    c# - 在不同的项目中实现相同的接口(interface)

    asp.net-core - 检查程序包是否与.net核心兼容