1

语境:

我正在尝试使用 ADFS SSO 并按照本教程首先连接到 Azure AD:

http://www.cloudidentity.com/blog/2013/10/25/securing-a-web-api-with-adfs-on-ws2012-r2-got-even-easier/

那行得通。

然后按照其他教程尝试使其连接到我们的 Win Server 2012 R2 上的 ADFS:

http://www.cloudidentity.com/blog/2013/10/25/securing-a-web-api-with-adfs-on-ws2012-r2-got-even-easier/

正如他们在第三个教程中所说: https ://msdn.microsoft.com/en-us/library/dn660967.aspx

我收到 SSL 证书错误:

在此处输入图像描述

问题:

我知道我可以绕过证书验证或在ServicePointManager.ServerCertificateValidationCallback中放置特殊逻辑来解决此问题,但由于我在本地机器“受信任的根证书颁发机构”中导入了证书......:

  1. ...为什么我的服务仍然抱怨证书?

  2. ...有没有办法告诉我的 C# 服务接受“受信任的根证书颁发机构”存储中的所有证书?

注意:我确实实现了一个ServicePointManager.ServerCertificateValidationCallback并且它有效,但是由于我们将获得一大堆客户向我们发送他们的 ADFS 证书,我只想将他们的证书导入证书存储区以让我们的服务信任他们。

谢谢

4

1 回答 1

5

您应该将根证书放在受信任的根证书颁发机构存储中(而不是证书本身)。如果您打开证书并转到证书路径,您将能够查看根证书。

为了进一步解释这一点:

每个证书都有一个颁发者,而这样的颁发者也有一个证书。

通常发行者是证书颁发机构 (CA)。

(CA 的)此类证书可能由 CA 本身(自签名)或另一个父 CA 签名。

所以你在这里有一个父/子关系。根证书是根颁发者的证书,即自签名证书的父/祖父。

认证路径选项卡

在此示例中,管理员证书由 CA 签名。CA 证书是自签名的。在这种情况下,您可能希望将 CA 证书安装到受信任的根证书颁发机构存储中。

在证书验证方面,还有其他因素在起作用。例如,证书具有过期数据,超过该数据将被视为无效。

于 2015-10-05T23:13:22.943 回答