IdentityServer:远程证书根据验证程序无效

Posted

技术标签:

【中文标题】IdentityServer:远程证书根据验证程序无效【英文标题】:IdentityServer: The remote certificate is invalid according to the validation procedure 【发布时间】:2015-03-17 21:45:04 【问题描述】:

我正在尝试使用 OWin 和 Thinktecture Identity Server 设置 SSO,但我无法让 SSL 证书正常工作。至少我认为这是问题所在。当我在 Visual Studio 中时一切正常,但如果我尝试在我的机器上使用 IIS,它会给我错误“根据验证过程,远程证书无效”。我也尝试使用 IIS 作为客户端,将在 Visual Studio 中运行的实例视为令牌授权,但我仍然遇到相同的错误。有人对我做错了什么有任何想法吗?

【问题讨论】:

【参考方案1】:

在我的情况下,我只是尝试处理示例(对于 ID3v2)并让证书错误在本地运行。由于有些样本甚至通过 owin 进行自我托管,我什至不确定它从哪里获得主机端的证书??

无论如何,我的解决方法是将证书复制到受信任的根目录:

    Windows => 开始 => 运行 MMC.EXE 文件=>“添加/删除管理单元...”=>证书 使用计算机帐户 => 本地计算机 => 完成 => 确定 进入个人/证书下 右击“localhost”,选择复制 粘贴到“受信任的根证书颁发机构”

完成。享受吧。

【讨论】:

非常感谢。我有这个问题好几天了。 对于那些MMC在添加管理单元时一直崩溃的人,您也可以尝试运行certlm.msc,然后继续第4步。 你是最棒的,朋友 现在您在受信任的根目录中获得了带有私钥的证书。这是一个安全漏洞。最好在没有私钥的情况下导出 localhost 并将其导入受信任的根目录。完整的细节在这里blogs.iis.net/robert_mcmurray/… 这也有助于解决错误“由于证书链中的错误,远程证书无效:UntrustedRoot”【参考方案2】:

在花了很多时间为我解决之后,解决方案非常简单

我刚刚打开了 Certmgr.msc ---> 从 Trusted Root 证书颁发机构删除了 localhost 证书。

然后打开我的解决方案(在我运行身份服务器之后) 单击运行 Visual Studio 询问我是否要为 iis express (ssl) 生成新证书, 我点击了是,然后它开始正常工作:)

【讨论】:

【参考方案3】:

您需要将 IIS 使用的任何证书添加到本地计算机上的受信任的根证书颁发机构存储中。

【讨论】:

【参考方案4】:

根据作者提供的readme file in examples,向 Trusted People 存储添加证书就足够了。

在生产场景中它应该更好,因为根存储是用于 CA 的,当您在那里添加一些东西时,该权限不仅是受信任的,而且由它签名的任何证书都会自动受信任。

您可以通过microsoft reference 查看更多详细信息。 2 商店简短描述的摘录: 根:受信任的根证书颁发机构 (CA) 的证书存储。 TrustedPeople:直接信任的人员和资源的证书存储。

P.S:我测试了它,它可以工作。在我的场景中,我在机器 A 上有 IS,在机器 A 和 B 上有一组使用 IS 的 Web 应用程序。机器 B 上的 IIS 证书与 A 和 IS 中使用的证书不同,但我只是在机器 B 上添加了它商店和“证书错误”消失了。

【讨论】:

【参考方案5】:

虽然完成了上述设置并且您将 URL 指定为“https://localhost”,但有时它不起作用,而是将 URL 指定为“https://MachineName”。 即机器名称应与证书的“颁发给”值匹配

【讨论】:

【参考方案6】:

这可能是由于以前的认证配置错误造成的(有时可能会发生在您不同意安装认证时):

    Windows 启动并打开 Certmgr.msc 在人员/证书下,找到所有本地主机证书并将其删除 在受信任的根证书下执行相同操作,然后关闭。 启动你的应用程序,你会得到一个异常。 打开包管理器控制台并执行:dotnet dev-certs https --trust 重新启动您的应用程序,通常您现在有一个有效的证书。

【讨论】:

【参考方案7】:

对于 .Net Core 将 TrustServerCertificate=False 更改为 TrustServerCertificate=True ,这将解决您的问题,如下所示。

"DataConnect": "Server=tcp:127.0.0.1,1433;Initial Catalog=dbName;Persist Security Info=False;User ID=username;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;Connection Timeout=30;"

【讨论】:

以上是关于IdentityServer:远程证书根据验证程序无效的主要内容,如果未能解决你的问题,请参考以下文章

根据验证程序,远程证书无效[重复]

使用 HttpClient 的“远程证书根据验证程序无效”

根据验证程序,远程证书无效

检索 JWT 身份验证的证书/密钥时出现问题。 (节点/Express/C#/IdentityServer)

ITfoxtec - ADFS SAML2 根据验证程序,远程证书无效

抛出异常:根据验证程序,远程证书无效