我正在尝试使用 OWin 和 Thinktecture Identity Server 设置 SSO,但我无法让 SSL 证书正常工作。至少我认为这是问题所在。当我在 Visual Studio 中时一切正常,但如果我尝试在我的机器上使用 IIS,它会给我错误“根据验证过程,远程证书无效”。我也尝试使用 IIS 作为客户端,将在 Visual Studio 中运行的实例视为令牌授权,但我仍然遇到相同的错误。有人对我做错了什么有任何想法吗?
7 回答
在我的情况下,我只是尝试处理示例(对于 ID3v2)并让证书错误在本地运行。由于有些样本甚至通过 owin 进行自我托管,我什至不确定它在哪里获得主机端的证书?
无论如何,我的解决方法是将证书复制到受信任的根目录:
- Windows => 开始 => 运行 MMC.EXE
- 文件=>“添加/删除管理单元...”=>证书
- 使用计算机帐户 => 本地计算机 => 完成 => 确定
- 进入个人/证书
- 右键单击“localhost”,选择复制
- 粘贴到“受信任的根证书颁发机构”
完毕。享受。
在为我花了很多时间之后,解决方案非常简单
我刚刚打开了 Certmgr.msc ---> 从受信任的根证书颁发机构中删除了 localhost 证书。
然后打开我的解决方案(在我运行身份服务器之后)单击运行视觉工作室问我是否要为 iis express (ssl) 生成新证书,我单击是然后它开始正常工作:)
您需要将 IIS 使用的任何证书添加到本地计算机上的受信任的根证书颁发机构存储中。
有时,尽管完成了上述设置并且您将 URL 指定为“ https://localhost ”,但有时它不起作用,而是将 URL 指定为“ https://MachineName ”。即机器名称应与证书的“颁发给”值匹配
根据作者提供的示例中的自述文件,将证书添加到 Trusted People 商店就足够了。
在生产场景中,它应该更好,因为根存储是用于 CA 的,当您在那里添加一些东西时,该权限不仅是受信任的,而且由它签名的任何证书都是自动受信任的。
您可以从microsoft 参考中查看更多详细信息。2 存储简短描述的摘录:
根:受信任的根证书颁发机构 (CA) 的证书存储。
TrustedPeople:直接信任的人员和资源的证书存储。
PS:我测试了它,它可以工作。在我的场景中,我在机器 A 上有 IS,在机器 A 和 B 上有一组使用 IS 的 Web 应用程序。机器 B 上的 IIS 证书与 A 和 IS 中使用的证书不同,但我只是在机器 B 上添加了它商店和“证书错误”消失了。
这可能是由于以前的认证配置错误造成的(有时可能会在您不同意安装认证时发生):
- Windows 启动并打开 Certmgr.msc
- 在 Personnel/Certificats 下,找到所有 localhost 证书并将其删除
- 在受信任的根认证下做同样的事情,然后关闭。
- 启动你的应用程序,你会得到一个异常。
- 打开包管理器控制台并执行:dotnet dev-certs https --trust
- 重新启动您的应用程序,通常您现在有一个有效的证书。
对于 .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;"