2012-02-28 54 views
4

我正在設置服務器,以便只有映射的證書才能訪問Web服務。它被設置爲要求SSL /客戶端證書,匿名身份驗證,asp.net模擬,表單身份驗證和Windows身份驗證都被禁用。一對一客戶端證書映射已啓用,證書通過適當的用戶映射在框中設置。當我嘗試使用web服務時,我得到401.2。如果我啓用匿名身份驗證,它可以工作,但我不希望任何舊的證書能夠訪問該網站。啓用證書身份驗證時獲取401.2

我有另一臺機器在此配置中禁用了匿名身份驗證,並且它有效。我不確定有什麼不同。

+0

您能澄清一下這句話:「它被設置爲要求SSL /客戶端證書,匿名身份驗證,asp.net模擬,表單身份驗證和Windows身份驗證都被禁用。」 目前尚不清楚您的配置中有哪些和未啓用。此外,您正在使用哪些版本的IIS,Windows和哪些瀏覽器? – 2012-03-07 05:39:09

+0

@natemrice - 當然。 IIS 7,Server 2008,並且我已經試過了IE和Chrome,但是由於這是一個.Net 2.0 WebService,訪問是專門來自一個程序的。澄清:如果您進入IIS管理器並點擊所需的網站: 1)在「身份驗證」下,您可以找到匿名身份驗證,ASP.Net模擬,表單身份驗證,Windows身份驗證。只有匿名已啓用,我想禁用它。 2)單擊網站並轉到SSL設置,並選中「需要SSL」,並將客戶證書設置爲「要求」 – 2012-03-07 16:42:51

回答

1

的問題結束了這是調用,而不是在配置軟件。自從他付出了很大的努力回答最終是一個非問題的話,我就獎勵了他的賞金。

編輯:有關更多信息,它實際上最終是發送的證書(從本地框)到放置在oneToOne映射中的證書之間的不匹配。通用名稱是相同的,但證書是不同的(可能是第一個過期),所以證書根本沒有被授權。

1

您是否從客戶端/服務器信任的證書服務器頒發您的客戶端證書?如果您查看證書上的「增強型密鑰用法」屬性,是否是其「客戶端身份驗證」屬性之一?在IIS中,是否安裝了客戶端證書映射角色(請參閱圖1)?你是否啓用「Client Certificate Mapping」並將用戶映射到證書?您需要導入所有客戶端證書並將其映射到此處的用戶帳戶。您可以在此處配置時刪除所有其他客戶端身份驗證方法。

enter image description here

+0

證書是可信的(順便說一句,這不可能是問題,因爲網站立即拒絕這些請求,說因服務器配置(401.2代碼)而無法連接)。在system.webServer/security/authentication/iisClientCertificateMappingAuthentication中,enabled設置爲true,manyToOne..enabled設置爲true,oneToOne..enabled設置爲true。在oneToOneMappings集合中設置了證書。 – 2012-03-07 20:48:52

+0

問題是2件事中的1件:1)您仍然擁有所有其他身份驗證機制,它們應該全部關閉,或者2)您的客戶端映射以某種方式搞砸了。客戶端證書不匹配服務器,不正確的用戶等。 – 2012-03-07 21:49:41

5

我遇到了同樣的問題,但上面的解決方案沒有解決我的問題。我在網站的子目錄上配置了IIS證書認證,而不是在網站上。

所以,這是錯誤的:

Wrong usage

這是正確的:

Correct usage

一旦我搬到配置到網站的根,一切都工作正常。

我在http://blogs.msdn.com/b/saurabh_singh/archive/2009/06/13/avoid-this-confusion-around-client-certificate-mapping-in-iis-6-0-7-0.aspx找到了解決方案。

+1

這是我正在尋找的提示!我只是在IIS7.5上試過,證書到用戶的映射只能在網站的根目錄下運行。但是,您可以配置它並將其保留爲根,然後僅在需要使用的別名上啓用它,而不必重複映射。 – Luke 2016-06-17 13:35:42

相關問題