信任存储在 c# 中“受信任的根证书颁发机构”中的 SSL 证书

zuk*_*nta 1 c# ssl-certificate single-sign-on adfs3.0

语境:

我正在尝试使用 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 证书,我只想将他们的证书导入证书存储中,让我们的服务信任他们。

谢谢

Yac*_*sad 5

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

为了进一步解释这一点:

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

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

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

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

认证路径选项卡

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

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