安装IIS App Pool帐户的客户端证书

p.c*_*ell 8 security iis web-services ssl-certificate x509certificate

场景:

  • 客户端在LAN上调用WebService A. WebService A在具有标识"网络服务"的应用程序池下运行.
  • WebService A做了一些工作,准备调用WebService B.
  • WebService B需要客户端证书(*.cer)和SSL.
  • WebService A位于专用的Windows 2003服务器上.
  • 一切都在Dev环境中工作(但具有管理员权限的开发人员始终在本地登录(毫不奇怪!).
  • 证书存储在磁盘上 C:\MyCertificates\
  • 使用此代码段在Dev中成功运行证书: myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

问题: WebService A正在调用WebService B,返回的异常是:

请求失败,HTTP状态为403:Forbidden

这实际上意味着证书未在请求中发送到WebService B.

我假设将此证书安装到浏览器中不是解决方案.浏览器设置通常是按用户进行的,我需要将证书提供给运行Web服务的凭据的用户.(例如,网络服务,系统或IIS AppPool设置中的任何内容).

问题:如何向生活在指定目录位置的证书授予对网络服务或其他非用户帐户的访问权限或关联权?

Kev*_*Kev 3

这篇 Microsoft 知识库文章可能有用:

如何在 ASP.NET Web 应用程序中使用客户端证书进行身份验证来调用 Web 服务 (MS KB901183)

您的 Web 服务“A”实际上是调用该 Web 服务的 ASP.NET 应用程序,如本文中所述。