2015-04-01 101 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