我使用受保护的configuration来存储在我们的asp.net应用程序的Web.config文件中encryption的敏感数据。
我已经按照演练:创build和导出RSA密钥容器中的步骤生成和导出私钥。
我遵循演练中的步骤:使用受保护的configurationencryptionconfiguration信息以使用该密钥encryptionWeb.config文件的一部分。
我的问题是,我无法在testing环境中使用该键,由于aspnet_regiis
命令的奇怪行为。
我已经能够在运行Windows 8的同事的计算机上工作aspnet_regiis -pi
命令(导入私钥)和aspnet_regiis -pa
(授予对私钥的访问)在那里没有问题。
在运行Windows 7的testing环境中,我已经能够使用aspnet_regiis -pi <KeyContainer> <KeyFile>
成功地将私钥导入到密钥容器中。
但是,当我尝试aspnet_regiis -pa <KeyContainer> <account-name>
,该命令只是列出了它的命令行选项。 这并不表示失败或成功。
所有这些环境都使用.Net Framework v4。
我已经看了这个问题 ,但不同的是,我能够执行aspnet_regiis -pi <KeyContainer> <KeyFile>
。 正如在这里所build议的那样,执行aspnet_regiis -lk
也没有什么不同。
问题是:如何授予应用程序访问密钥容器的内容,以便它可以解密Web.config? 为什么aspnet_regiis就像“-pa”选项不存在一样,而不是给我一个“成功”或“失败”的消息?
事实certificate,我们正在使用aspnet_regiis的错误版本。
我们从%Windows%\Microsoft.Net\Framework\v4.0.30319
目录调用aspnet_regiis。
当从%Windows%\Microsoft.Net\Framework64\v4.0.30319
(64位版本)中调用该命令时,该命令报告成功。
不过,错误信息会有帮助…
编辑:
似乎密钥容器不可用,除非你有一个用户configuration文件。 在另一台服务器上,当我们允许使用“作为服务login”的帐户访问密钥容器时,即使它位于pipe理员组中,也失败了。 当我们实际login时,创build一个用户configuration文件,密钥容器确实可用。