【问题标题】:Disable IIS client certificate trust check and validation禁用 IIS 客户端证书信任检查和验证
【发布时间】:2020-04-20 23:45:29
【问题描述】:

我们的 ASP.NET Core 应用程序中有一些自定义客户端证书验证。它在独立运行时运行良好(即,仅使用 Kestrel 服务器)。但是,在生产中,我们希望在 Kestrel 前面有一个 IIS。不幸的是,IIS 执行了自己的验证/信任检查,并认为客户端证书无效(返回 403.16)。

如何克服这个问题?如何在 IIS 中禁用客户端证书验证 + 信任检查? IIS 应该简单地将客户端证书转发给我们,而不用做任何其他事情。我们明确不希望将客户端证书导入受信任的根存储区(或机器上的任何证书存储区)。

【问题讨论】:

  • 您是否在IIS中启用了客户端证书认证或其他认证方式?您可以使用 IIS 管理控制台的身份验证图标来查看它。
  • 不,我们没有。
  • @D.R.你有没有找到任何解决方案?我们面临同样的问题。
  • 我们采取了不同的方式,但是,我的一位同事指出,编写我们自己的 IIS 模块或 IIS 处理程序可以解决问题。希望对您有所帮助!

标签: asp.net-core iis


【解决方案1】:

根据您的描述,我猜证书颁发机构的根证书不在 IIS Web 服务器上的 Trusted Root Certification Authorities 证书存储中。所以你面临这个问题。

我建议你可以按照下面的步骤来导入它。

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

2.在文件菜单上,单击添加/删除管理单元。

3.在可用的管理单元下,单击证书,然后单击添加。

4.单击计算机帐户,然后单击下一步。

5.单击本地计算机,单击完成,然后单击关闭。

6.要退出向导,请单击“确定”。

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

8.在证书导入向导中,单击下一步。

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

10.单击下一步,然后单击完成。

更多细节,你可以参考这个article

【讨论】:

  • 感谢您指出如何将证书导入受信任的根存储,但是,我们明确希望事先允许此存储中不知道的客户端证书。抱歉,如果问题中没有明确说明,我会尝试改进问题。
  • 在我看来,你可以使用一个CA来签署所有的证书,你的服务器只需要信任这个CA,所有的客户端证书都会被信任。
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 2018-10-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多