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

时间:2009-06-23 18:49:03

标签: web-services security iis ssl-certificate x509certificate

情境:

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

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

  

请求因HTTP状态而失败   403:禁止

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

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

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

1 个答案:

答案 0 :(得分:3)

此Microsoft知识库文章可能有用:

  

How to call a Web service by using a client certificate for authentication in an ASP.NET Web application (MS KB901183)

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