iis 客户端证书映射身份验证

iis 客户端证书映射身份验证

我已经在 Google 上搜索了好几个小时。我无法使我的映射在某些证书字段上工作。请参考此示例代码:

<iisClientCertificateMappingAuthentication enabled="true" manyToOneCertificateMappingsEnabled="true">
  <manyToOneMappings>
    <add name="Contoso Employees"
         enabled="true"
         permissionMode="Allow"
         userName="Username"
         password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
      <rules>
        <add certificateField="Subject"
             certificateSubField="O"
             matchCriteria="MyCompany A/S CVR:12345"
             compareCaseSensitive="true" />
      </rules>
     </add>
   </manyToOneMappings>
</iisClientCertificateMappingAuthentication>

这不管用。我怀疑 matchCriteria="MyCompany A/S CVR:12345"。如果我将它映射到 certificateSubField="C" 和 matchCriteria="DK" 上,那么它就可以正常工作。我也尝试过这种组合 matchCriteria="MyCompany*",其中我使用了通配符 *,但它仍然不起作用。如果我只使用 matchCriteria="*" 中的 *,那么它就可以正常工作,但这又是一个无用的匹配。

我使用 certutil 检查了它为子字段 CN、O 和 C 提供的值。CN 和 O 具有相似的值:MyCompany A/S CVR:12345 它们都包含空格和特殊字符。

我如何在 II 7.5 中进行这种匹配?我应该提到,在 IIS 6 中,对完全相同的值的这种映射可以正常工作。

答案1

我自己搞明白了。这是因为如果证书颁发者、主体采用 UTF8 编码字符串,iisclientcertificate 映射就会失败。这是 IIS 7 和 7.5 的已知问题。

Microsoft 提供了一个修复此问题的修补程序。请查看知识库文章 2597665:

“IIS 中的证书映射规则不适用于 Windows Server 2008、Windows Vista、Windows Server 2008 R2 或 Windows 7 中具有 Unicode 编码属性的客户端证书”

相关内容