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

时间:2015-10-05 22:53:49

标签: 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/

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

我收到SSL证书错误:

enter image description here

问题:

我知道我可以绕过证书验证或在 ServicePointManager.ServerCertificateValidationCallback 中放置特殊逻辑来编写代码,但是因为我在本地计算机中引入了证书"受信任的根证书颁发机构" ...

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

  2. ...有没有办法告诉我的C#服务接受所有证书     在"受信任的根证书颁发机构"店?

  3. 注意:我确实实现了 ServicePointManager.ServerCertificateValidationCallback ,但是由于我们将获得一大堆客户端向我们发送他们的ADFS证书,我希望只需要导入他们的证书cert store让我们的服务信任他们。

    由于

1 个答案:

答案 0 :(得分:3)

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

进一步解释:

每个证书都有发行人,而且这样的发行人也有证书。

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

此类证书(CA)可能由CA本身(自签名)或其他父CA签署。

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

The certification path tab

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

在证书验证方面,还有其他因素可以发挥作用。例如,证书具有到期数据,之后将被视为无效。