Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 禁用IIS客户端证书信任检查和验证_Asp.net Core_Iis - Fatal编程技术网

Asp.net core 禁用IIS客户端证书信任检查和验证

Asp.net core 禁用IIS客户端证书信任检查和验证,asp.net-core,iis,Asp.net Core,Iis,我们在ASP.NET核心应用程序中有一些自定义客户端证书验证。当独立运行时(即,仅使用Kestrel服务器),它工作得非常好。然而,在生产中,我们希望有一个IIS在我们的红隼前面。不幸的是,IIS执行自己的验证/信任检查,并认为客户端证书无效(返回403.16) 如何克服这个问题?如何在IIS中禁用客户端证书验证+信任检查?IIS只需将客户端证书转发给我们,而不做其他处理。我们明确不希望将客户端证书导入受信任的根存储(或计算机上的任何证书存储)。根据您的描述,我猜证书颁发机构的根证书不在IIS

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


如何克服这个问题?如何在IIS中禁用客户端证书验证+信任检查?IIS只需将客户端证书转发给我们,而不做其他处理。我们明确不希望将客户端证书导入受信任的根存储(或计算机上的任何证书存储)。

根据您的描述,我猜证书颁发机构的根证书不在IIS Web服务器上的受信任的根证书颁发机构证书存储中。所以你要面对这个问题

我建议您可以按照以下步骤导入它

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

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

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

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

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

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

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

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

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

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


更多详细信息,请参阅。

是否已在IIS中启用客户端证书身份验证或其他身份验证模式?您可以通过使用IIS管理控制台的身份验证图标来查看它。不,我们没有。@D.R.您找到解决方案了吗?我们面临着同样的问题。然而,我的一位同事指出,我们走了一条不同的道路,编写我们自己的IIS模块或IIS处理程序可以做到这一点。希望有帮助!感谢您指出如何将证书导入受信任的根存储,但是,我们明确希望允许在此存储中事先不知道的客户端证书。很抱歉,如果问题中不清楚,我将尝试改进问题。在我看来,您可以使用CA对所有证书进行签名,您的服务器只需信任此CA,所有客户端证书都将被信任。