【问题标题】:Windows service can't open RSA key containerWindows 服务无法打开 RSA 密钥容器
【发布时间】:2014-06-16 10:39:48
【问题描述】:

一些背景:

我有一个解决方案,包括:

  • IIS 应用程序 (ASP.NET)
  • Windows 服务

IIS 应用程序和 Windows 服务都在同一个域帐户下运行。它们还连接到同一个数据库。

数据库访问凭据存储在一个通用配置文件中,并使用 aspnet_regiis.exe 工具进行加密。 ACL 权限授予对域帐户的密钥容器的读取权限。

Web 应用程序可以访问密钥容器并解密连接字符串。

另一方面,该服务无法访问 RSA 密钥容器。我得到错误:

尝试连接数据库时出现意外错误;例外: System.Configuration.ConfigurationErrorsException:解密失败 使用提供者“RsaProtectedConfigurationProvider”。错误信息来自 提供者:无法打开 RSA 密钥容器。 (C:\ApplicationDir\ConnectionSettings.config 第 2 行)---> System.Configuration.ConfigurationErrorsException:RSA 密钥 无法打开容器。

解决方法:

  1. 将域帐户添加到管理员组(哎呀!)
  2. 将域帐户添加到 IIS_IUSRS 组
  3. 更改所有人组的权限条目。默认情况下,读取权限仅应用于此文件夹。将此值更改为 此文件夹、子文件夹和文件 似乎可行。
  4. MachineKeys 文件夹中为域帐户添加权限条目

我倾向于选项 2,但这里到底发生了什么?

为什么应用程序池可以在所述域帐户下运行,而不是在同一域帐户下运行的Windows服务?

在某些情况下,域帐户是否不被视为所有人组的一部分?

处理这种情况的最佳做法是什么?

谢谢, 凯文

【问题讨论】:

    标签: asp.net encryption windows-services windowsdomainaccount rsaprotectedconfiguration


    【解决方案1】:

    事实证明,需要将读取权限授予域帐户的“NetFrameworkConfigurationKey”。

    aspnet_regiis -pa "NetFrameworkConfigurationKey" "[DOMAIN_NAME]\[USER_ACCOUNT]"
    

    更多信息:http://msdn.microsoft.com/en-us/library/yxw286t2(v=vs.100).aspx

    【讨论】:

    • 感谢您在找到答案时添加答案。我还有一个服务无法读取其加密的配置文件,并且授予对此密钥容器(以及配置文件加密的密钥容器)的访问权限,最终允许该服务在运行时读取加密的配置文件网络服务帐户。
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2011-06-12
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多