Eri*_*ric 31 iis ssl certificate client-certificates
我正在尝试在IIS 8上实现客户端证书身份验证.我已在开发计算机上部署了我的配置,并验证它在那里按预期工作.但是,在服务器上进行设置后,每当我导航到该站点并提示您输入客户端证书时,我都会选择它并立即收到403.16错误.失败的请求日志提供错误代码2148204809和消息"证书链已处理,但终止于信任提供程序不信任的根证书".
我有一个有效的客户端证书和一个有效的CA证书.CA证书安装在服务器和客户端计算机上的计算机帐户上的"受信任的根颁发机构"中,客户端证书安装在客户端计算机上的"当前用户"帐户的"个人"区域中.
客户端证书由根CA直接签名,正如我所说,两者都是有效的.链中没有其他证书,并且"受信任的根权限"区域中没有中间证书.
IIS配置已启用sslFlags = SslNegotiateCert和iisClientCertificateMappingAuthentication.
服务器未配置为发送CTL,我们有SendTrustedIssuerList = 0.
我不明白为什么不应该信任客户端证书.
Aar*_*sen 87
Windows 2012引入了更严格的证书存储验证.根据KB 2795828:Lync Server 2013前端服务无法在Windows Server 2012中启动,受信任的根证书颁发机构(即根)存储只能具有自签名的证书.如果该存储包含非自签名证书,则IIS下的客户端证书身份验证将返回403.16错误代码.
要解决此问题,您必须从根存储中删除所有非自签名证书.此PowerShell命令将标识非自签名证书:
Get-Childitem cert:\LocalMachine\root -Recurse |
Where-Object {$_.Issuer -ne $_.Subject}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我们将这些非自签名证书移到了中级证书颁发机构(即CA)商店:
Get-Childitem cert:\LocalMachine\root -Recurse |
Where-Object {$_.Issuer -ne $_.Subject} |
Move-Item -Destination Cert:\LocalMachine\CA
Run Code Online (Sandbox Code Playgroud)
根据KB 2801679:安装KB 931125后的SSL/TLS通信问题,您可能还有太多可信证书.
[T] Schannel安全包支持的可信证书颁发机构列表的最大大小为16千字节(KB).拥有大量第三方根证书颁发机构将超过16k限制,您将遇到TLS/SSL通信问题.
在这种情况下,解决方案是删除您不信任的任何证书颁发机构证书,或者通过将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\@SendTrustedIssuerList注册表项设置为0(默认值,如果不存在,为1)来停止发送可信证书颁发机构列表.
就我而言,我一直将根证书添加到服务器上的“当前用户”证书存储中,并收到403.16错误。
将我的根证书添加到本地计算机的“受信任的根权限”存储中可以解决此问题。
在运行IIS的服务器上,按照以下步骤操作。
对于Windows Server 2008 R2:
对于Windows Server 2012 R2:
对于Windows 7:
| 归档时间: |
|
| 查看次数: |
40541 次 |
| 最近记录: |