设想:
- 客户端在 LAN 上调用 WebService A。WebService A 在具有“网络服务”身份的应用程序池下运行。
- WebService A 做一些工作,准备调用 WebService B。
- WebService B 需要客户端证书 (*.cer) 和 SSL。
- WebService A 位于专用的 Windows 2003 服务器上。
- 一切都在开发环境中正常工作(但具有管理员权限的开发人员始终在本地登录(不足为奇!)。
- 证书存储在磁盘上
C:\MyCertificates\
- 证书在运行时已成功应用到 Dev 中,带有以下代码段:
myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));
问题: WebService A调用WebService B,返回异常为:
请求失败,HTTP 状态 403:禁止
这实际上意味着证书没有在请求中发送到 WebService B。
我假设将此证书安装到浏览器中不是解决方案。浏览器设置通常是针对每个用户的,我需要将证书提供给运行 Web 服务的凭据的用户。(例如网络服务、系统或 IIS AppPool 设置中的任何内容)。
问题:如何将位于指定目录位置的证书的访问权限或关联授予网络服务或其他非用户帐户?