2015-10-05 205 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,這將是一個自簽名證書 –