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

Posted

技术标签:

【中文标题】为 IIS 应用程序池帐户安装客户端证书【英文标题】:Install client certificate for IIS App Pool account 【发布时间】:2009-06-23 18:49:02 【问题描述】:

场景:

客户端在 LAN 上调用 WebService A。 WebService A 在具有“网络服务”身份的应用程序池下运行。 WebService A 做了一些工作,准备调用 WebService B。 WebService B 需要客户端证书 (*.cer) 和 SSL。 WebService A 位于专用的 Windows 2003 服务器上。 一切都在开发环境中正常运行(但拥有管理员权限的开发人员始终在本地登录(不足为奇!)。 证书存储在磁盘上C:\MyCertificates\ 证书在运行时成功应用在 Dev 中,带有这个 sn-p:myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于为 IIS 应用程序池帐户安装客户端证书的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7 托管 WCF 服务使用域帐户作为应用程序池标识

IIS 应用程序池不会在组托管服务帐户下启动 [关闭]

IIS7 中的身份池

如何使用域 Windows 用户帐户作为应用程序池标识

windows7系统ASP安装

IIS 应用程序池登录凭据停止 .net Core