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