Web services 为IIS应用程序池帐户安装客户端证书

Web services 为IIS应用程序池帐户安装客户端证书,web-services,security,iis,ssl-certificate,x509certificate,Web Services,Security,Iis,Ssl Certificate,X509certificate,场景: 客户端在局域网上调用WebService A。WebService A在标识为“网络服务”的应用程序池下运行 WebService A做了一些工作,准备调用WebService B WebService B需要客户端证书(*.cer)和SSL WebService A位于专用的Windows 2003服务器上 一切都在开发环境中正常工作(但是具有管理员权限的开发人员总是在本地登录(这并不奇怪!) 证书存储在磁盘上的C:\MyCertificates\ 该证书正在运行时使用以下代码段在开

场景:

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

请求失败,状态为HTTP 403:禁止

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

我假设将此证书安装到浏览器中不是一个解决方案。浏览器设置通常是针对每个用户的,我需要将证书提供给web服务运行时使用其凭据的用户。(例如,网络服务、系统或IIS应用池设置中的任何内容)


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

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

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