通过ASP.NET应用程序中的客户端签名SSL证书对用户进行身份验证

时间:2013-09-22 10:31:06

标签: asp.net ssl client-certificates self-signed

我想为网站添加额外的安全性,并为我的用户生成自签名客户端证书。

我将IIS设置为需要客户端证书,为服务器创建自签名证书,并按照一些文章解释如何通过makecert和pvk2pfx创建客户端证书(所有这些都使用以下方法):

makecert -r -n "CN=My Personal CA" -pe -sv MyPersonalCA.pvk -a sha1 -len 2048 -b 01/21/2010 -e 01/21/2016 -cy authority MyPersonalCA.cer
makecert -iv MyPersonalCA.pvk -ic MyPersonalCA.cer -n "CN=John Doe" -pe -sv JohnDoe.pvk -a sha1 -len 2048 -b 01/21/2010 -e 01/21/2016 -sky exchange JohnDoe.cer -eku 1.3.6.1.5.5.7.3.2
pvk2pfx -pvk JohnDoe.pvk -spc JohnDoe.cer -pfx JohnDoe.pfx -po PASSWORD

我在可信认证机构中安装了MyPersonalCA,在适当的认证存储中安装了JohnDoe.pfx。

然而,当我打开我的网站时,我得到了:

HTTP错误403.7 - 禁止

我错过了什么?为什么浏览器不发送客户端证书?

2 个答案:

答案 0 :(得分:1)

以下条件允许浏览器选择证书:

  1. 必须使用"客户端身份验证生成证书"选项

     1.3.6.1.5.5.7.3.2 - id_kp_clientAuth 
    
  2. 签署证书的证书必须安装在服务器上的受信任的根证书颁发机构中(不在客户端上!)

  3. 证书本身必须安装在浏览器的证书存储区(ie和chrome的系统存储区,firefox中的内部存储区)

  4. 请注意,这仍然不足以进行身份​​验证,您还需要自定义身份验证模块或在服务器上手动配置证书和用户之间的映射。

答案 1 :(得分:0)

请遵循这篇文章 Client certificate authentication 这应该适用于Internet Explorer,当您打开网站时,系统会要求您选择证书。 对于FireFox,你必须做一个额外的步骤,你必须通过设置添加证书,这是如何 Firefox does not use windows certificates 祝你好运