iis 相互证书身份验证失败,错误为403.16

yrwegjxp  于 2023-02-04  发布在  其他
关注(0)|答案(3)|浏览(174)

我使用的是Windows Server 2012和IIS 8.5。我已经为网站设置了SSL,SSL设置为:要求必需和要求客户端证书。
我要发送到服务器的客户端证书是由自签名颁发机构(我们称之为MyCompany CA)颁发的。MyCompany CA证书已成功安装在本地计算机帐户-受信任的根证书颁发机构中。它的过期日期是2039,客户端证书的过期日期也是2039。
然而,在所有这些设置下,我得到了一个错误403.16。我已经启用了失败请求跟踪规则,并设法记录了一个错误请求,并得到了一些关于它的额外细节:
52.-MODULE_SET_RESPONSE_ERROR_STATUS -警告ModuleName - IIS Web核心通知-开始_REQUEST HttpStatus - 403 HttpReason -禁止的HttpSubStatus - 16 ErrorCode -证书链已处理,但在信任提供程序不信任的根证书中终止。(0x 800 b 0109)ConfigExceptionInfo
我已经检查了多个站点的结果403.16和错误代码0x 800 b 0109,他们都指向证书颁发机构没有安装在本地计算机-受信任的根证书颁发机构,但这不是我的情况。
谢谢!

ajsxfq5m

ajsxfq5m1#

我已经为此工作了很长时间,终于找到了!
将新项添加到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\安全提供程序\SCHANNEL值名称:客户端验证信任模式值类型:REG_DWORD值数据:2
刷新网页,选择证书,然后观看奇迹发生。

    • 研究**

使用Windows 8和IIS 8.5我按照这里的指示http://itq.nl/testing-with-client-certificate-authentication-in-a-development-environment-on-iis-8-5/.
证书在正确的位置创建,IIS中的一切都配置正确,但我一直收到403. 16错误。
在许多MSDN文章和其他尝试失败后,我发现了以下注册表设置。
设置HKEY_LOCAL_MACHINE\SYSTEM\当前控制集\控件\安全提供程序\SCHANNEL值名称:客户端验证信任模式值类型:REG_DWORD值数据:2
设置HKEY_LOCAL_MACHINE\SYSTEM\当前控制集\控件\安全提供程序\SCHANNEL值名称:发送受信任颁发者列表值类型:REG_DWORD值数据:0(False,或完全删除此项)
以下是有关此特定设置的一些详细信息(可在以下位置找到:http://technet.microsoft.com/en-us/library/hh831771.aspx
信任模式的默认值Schannel提供程序支持三种客户端身份验证信任模式。信任模式控制如何执行客户端证书链的验证,并且是由HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel下的REG_DWORD "ClientAuthTrustMode"控制的系统范围设置。
0机器信任(默认)要求客户端证书由"受信任的颁发者"列表中的证书颁发。
1独占根信任要求客户端证书链接到调用方指定的受信任颁发者存储中包含的根证书。证书还必须由受信任颁发者列表中的颁发者颁发
2独占CA信任要求客户端证书链接到调用方指定的受信任颁发者存储中的中间CA证书或根证书。有关由于受信任颁发者配置问题而导致身份验证失败的信息,请参阅知识库文章280256。
希望这对你也有用。

t3irkdon

t3irkdon2#

我已经尝试了上面建议的解决方案,效果很好。

不涉及编辑注册表的替代解决方案:

https://support.microsoft.com/en-us/help/2795828/lync-server-2013-front-end-service-cannot-start-in-windows-server-2012
本文的要点是从本地计算机受信任的根文件夹中删除所有未签名的证书。
如果使用组策略部署证书,请确保受信任的根证书颁发机构存储仅包含自签名证书(证书属性“使用者”与证书属性“颁发者”相同的证书)。将任何不是自签名证书的证书从受信任的根证书颁发机构存储移动到中间证书颁发机构存储。
如果手动导入新证书,请确保为自签名证书选择计算机的受信任根证书颁发机构存储,为非自签名证书选择计算机的中间证书颁发机构存储。
您可以使用Powershell脚本查找所有非自签名证书:

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

将这些证书移动到mmc中的“中级证书颁发机构”文件夹。

roejwanj

roejwanj3#

我必须重新启动服务器才能应用ClientAuthTrustMode设置。

相关问题