尝试访问在 IIS 7.0 上托管的网站时出现 HTTP 错误 403.16

本文帮助你解决 HTTP 403.16 - 访问 托管在 Internet Information Services (IIS) 7.0 上的网站时发生的禁止错误。

原始产品版本: Internet Information Services 7.0
原始 KB 编号: 942061

症状

你有一个托管在 IIS 7.0 上的网站。 尝试通过 Web 浏览器访问站点时,会收到类似于以下示例之一的错误消息。

  • 错误消息 1

    应用程序“应用程序名称”中的服务器错误
    HTTP 错误 403.16 - 禁止
    HRESULT:0x800b0109
    对 HRESULT 的说明
    客户端证书不受信任或无效。

  • 错误消息 2

    HTTP 403.16 客户端证书不受信任或无效。 智能卡用户无法进行身份验证。403 禁止

原因 1:根证书不在受信任的根证书颁发机构证书存储中

出现此问题的原因是证书颁发机构的根证书不在 IIS Web 服务器上的受信任根证书颁发机构证书存储中。

注意

证书颁发机构的根证书用于颁发客户端证书。

原因 2:非自签名证书位于受信任的根证书颁发机构证书存储中

受信任的根证书颁发机构证书存储中有一个或多个非自签名证书。 非自签名证书是与值不完全匹配的任何证书Issued ToIssued By

原因 1 的解决方法 1

  1. 在 IIS Web 服务器上,选择“开始”,在“开始搜索”框中键入mmc.exe,右键单击mmc.exe,然后选择“以管理员身份运行”。

    注意

    如果系统提示你输入管理员密码或进行确认,则键入密码或选择“继续”

  2. “文件” 菜单上,选择 “添加/删除管理单元”。

  3. 在“可用管理单元”下,选择“证书”,然后选择“添加”。

  4. 选择 “计算机帐户”,然后选择 “下一步”。

  5. 选择 “本地计算机”,选择 “完成”,然后选择 “关闭”。

  6. 若要退出向导,请选择 “确定”。

  7. 展开 证书,展开 受信任的根证书颁发机构,右键单击 “证书”,指向 “所有任务”,然后选择“ 导入”。

  8. 在“证书导入向导”中,选择 “下一步”。

  9. “文件名称 ”框中,键入证书颁发机构根证书的位置,然后选择 “下一步”。

  10. 选择 “下一步”,然后选择 “完成”。

原因 2 的解决方法 2

将任何非自签名证书移出受信任的根证书颁发机构证书存储,并移到中间证书颁发机构证书存储中。

更多信息

若要标识受信任的根证书颁发机构证书存储中的所有非自签名证书,请运行以下 PowerShell 命令:

Get-Childitem cert:\LocalMachine\root -Recurse |
Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\computer_filtered.txt"