2015-04-01 147 views
1

在證書提供商StartSSL上,當您註冊時,您需要輸入您的電子郵件和密碼。他們生成一個證書(.pfx),您需要下載並安裝到瀏覽器中。如何根據證書驗證用戶?

在評論中指出這是客戶端證書。

所以當你點擊登錄時,例如在Chrome中,彈出一個窗口並詢問你使用哪個證書。我可以擁有多個客戶端證書,並根據我選擇的內容登錄到單獨的帳戶。他們警告說,如果您丟失了證書,那麼無法重新生成新證書就無法登錄網站。

我想這樣做使用C# - 我想生成一個客戶端證書,然後稍後使用它作爲管理員登錄,無需輸入密碼。

這是什麼機制?如何生成證書並使用它們登錄到我的網站?我想在MVC C#網站上做到這一點。我不介意是否需要生成自簽名證書,僅限我自己使用。至少它擺脫了密碼錶單和蠻力攻擊。

+0

服務器端證書不認證用戶,即客戶端證書。你的問題不清楚你正在談論什麼樣的證書。 – Dai 2015-04-01 19:21:41

+0

您的服務器的SSL證書向用戶驗證您的服務器,而不是其他方式。這是與amazon.com用來證明您在瀏覽器中查看的網站確實是亞馬遜(amazon)完全相同的證書類型。 – 2015-04-01 19:22:30

+0

因爲我不確定它是如何完成的。它怎麼可能是一個客戶端證書?會發生什麼,該網站如何要求提供證書?客戶端發送給服務器的信息是什麼?指紋?代碼?我不明白。 – ppumkin 2015-04-01 19:22:58

回答

3

這很簡單,證書要求是SSL握手的一個選項。

首先,您需要轉到IIS上的SSL選項並檢查選項以接受和要求證書。這足以讓瀏覽器自動彈出證書選擇窗口,並且通信由服務器證書和客戶端證書相互保護。

https://technet.microsoft.com/pl-pl/library/cc753983%28v=ws.10%29.aspx

然後是請求管道。您可能需要httpmodule,或者您只需爲全局應用程序的AuthenticateRequest事件提供處理程序。在那裏,你指的是Request.ClientCertificate

https://msdn.microsoft.com/en-us/library/ms524668%28v=vs.90%29.aspx

您閱讀證書的獨特性能,例如指紋,你用你的本地數據庫中找到對應證書的用戶記錄,並設置了Principal爲請求的生命期相應。

+0

謝謝Wiktor。我如何生成證書。我有頂級SSL證書的私鑰,或者與生成客戶端證書無關? – ppumkin 2015-04-01 19:43:32

+1

客戶端證書與服務器SSL證書無關。您可以通過任何可能的方式生成證書,甚至可以使用makecert手動生成證書,也可以要求客戶使用他們已擁有的證書。唯一重要的元素是從證書指印到實際用戶的映射。 – 2015-04-01 19:45:32