【发布时间】:2014-06-02 07:29:57
【问题描述】:
我们正在开发一个托管在 IIS 中的 ASP.NET WebAPI,并使用带有 iisClientCertificateMappingAuthentication 的客户端证书进行身份验证。 在我们的本地开发环境中,我们测试了 IIS 7-8 和 Windows 7-8/Server 2012,所有这些都运行良好。
我们已经在 Azure 中设置了一个演示环境,其中的 VM 运行 Windows Server 2012 R2 和 IIS 8。使用此配置,我们尚未成功通过 IIS 客户端证书验证,在此我们一直收到 HTTP 403.16 错误。
该服务由我们已验证正在发送客户端证书的自定义 iOS 应用使用,这是意料之中的,因为我对错误的理解意味着 IIS 无法验证它收到的证书。
客户端证书颁发机构安装在受信任的根证书颁发机构和本地计算机的客户端身份验证颁发者存储中。
我们可以在此问题上找到的几乎所有资源都在这里提出了解决方案:http://social.technet.microsoft.com/Forums/en-US/fae724e8-628e-45a5-bf39-6e812d8a1a70/40316-problem-in-iss8-on-mp-in-dmz?forum=configmanagerdeployment 建议我们为 ClientAuthTrustMode 添加注册表设置。这并没有为我们解决问题;对于涉及完全相同的操作系统和 IIS 版本的任何本地测试,我们也不需要这样做。
我们花了几天时间解决这个问题,但希望有人能对这个问题有所了解。是否有任何我们尚未遇到的默认配置来为 Azure 中的 VM 启用这种形式的身份验证?似乎 Azure 中 VM 上的 IIS 无法实际验证受信任根中的 CA。我的一个想法是,在将证书路由到 IIS 之前,证书可能已从请求中删除,但同样,鉴于我对错误代码的理解,这似乎不太可能。
有没有人用这样的设置来工作?
【问题讨论】:
-
在上面提到的对您不起作用的文章中,添加 SendTrustedIssuerList = 0,以及 ClientAuthTrustMode = 2
标签: iis azure asp.net-web-api windows-server-2012 client-certificates