IIS 7.5客户端证书认证

6

我在本地机器上有一个asp.net网站。

IIS配置: 绑定:使用自签名证书的https绑定, SSL设置:需要SSL和需要客户端证书

我已经在我的机器上安装了以下证书: CA证书(称之为“CA中心”)在受信任的根证书颁发机构存储中。 由“CA中心”颁发的客户端证书在个人存储中。

我访问网站并接受服务器证书。但是接下来我收到错误:

HTTP Error 403.7 - Forbidden. The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.

这意味着浏览器(IE)没有向服务器发送适用的客户端证书。

出了什么问题?我应该配置其他内容吗?


我遇到了同样的问题,像我在答案中说的那样重新安装解决了问题。如果还不行,请尝试另一个浏览器并告诉我们发生了什么。您也可以尝试将两个证书放入TR和P存储中,仅供测试目的。 - DanM7
3个回答

3

我曾经遇到过这个问题,花费了很长时间才找出原因。结果是因为我的电脑属于一个域,并且该域有某种组策略限制了IIS愿意接受的受信任根证书。我不知道具体设置是什么或者如何更改它,但我发现我可以通过使用certutil命令将我的证书安装到企业物理存储中来解决它:

certutil -addstore -v -enterprise root CertificateAuthority.cer

您还可以使用Microsoft Management Console中的证书插件,确保您的自签名证书位于受信任的根证书颁发机构文件夹下。要添加插件,请运行:mmc -> 文件 -> 添加/删除插件 -> 证书 -> 添加 -> 计算机帐户。 - xcoder

2
看起来浏览器从未提示您选择要发送的客户端证书,这意味着SSL握手存在问题。尝试使用OpenSSL进行测试。
此外,非常常见的问题是受信任的根CA文件夹中有太多证书。当服务器发送CA列表时,列表的大小有限制,如果超过限制,将截断剩余的CA证书。确保受信任的根CA文件夹中没有太多证书。检查的一种方法是暂时修改注册表编辑器中的SCHANNEL,不发送CA列表,然后重新尝试。
开始 > 运行 > 'regedit' > HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL > 右键单击 > 新建 > DWORD > 'SendTrustedIssuerList' > 值:0

0

重新安装证书并检查其有效日期。来自Microsoft Support

  • 在服务器计算机上的浏览器中下载根服务器证书。运行位于Inetsrv目录中的Iisca.exe命令行实用程序。

  • 检查客户端证书的有效日期,并确保日期和时间已到达。

  • 检查过期日期,并确保证书尚未过期。联系您的证书颁发机构以查看您的证书是否已过期。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接