2015-10-05 161 views
0

语境:信任的SSL证书

我想尝试机智ADFS SSO并遵循本教程首先连接到Azure的AD:

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

工作。

然后要把它连接到ADFS我们赢服务器2012 R2下面这个其他教程: https://msdn.microsoft.com/en-us/library/dn660967.aspx

我:

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

,只是因为他们在这3教程说获得SSL证书错误:

enter image description here

问题:

我知道我可以绕过证书验证或放在特殊的逻辑在ServicePointManager.ServerCertificateValidationCallback来解决此代码,但因为我导入的证书在我的本地机器“受信任的根证书颁发机构” ... :

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

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

注:我没有实现ServicePointManager.ServerCertificateValidationCallback和作品,但因为我们会得到一大堆的客户向我们发送了ADFS证书的,我想只需要导入其证书的证书存储以使我们的服务信任他们。

感谢

+0

请确保您不要将它导入到错误的个人信任根权限。同时,请进一步检查证书是否需要中间证书。 –

回答

2

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

为了进一步说明这一点:

每个证书有发行人,这样的发行人也有一个证书。

通常发行者是一个认证机构(CA)。

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

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

The certification path tab

在这个例子中,管理员证书由CA签署。并且CA证书是自签名的。在这种情况下,您需要将CA证书安装到受信任的根证书颁发机构商店。

当涉及到证书验证时,还有其他因素发挥作用。例如,证书有一个到期数据,之后它将被认为是无效的。

+0

Yacoub,这是一个非常明确的解决方案和解释,谢谢千万!我认为很多人通过实施ServicePointManager.ServerCertificateValidationCallback来绕过自签名证书问题,而他们所要做的只是导入证书和颁发者证书! – zukanta

+0

如果我没有看到CA或任何根目录,但只有一个名字......?我面临这个问题,即使它被添加到受信任的根目录。 – Koder101

+0

@ Koder101,这将是一个自签名证书 –