我使用受保护的配置来存储敏感数据,这些数据已加密存储在我们的 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”选项不存在,而不是给我“成功”或“失败”消息?
答案1
事实证明我们使用了错误版本的 aspnet_regiis。
我们从%Windows%\Microsoft.Net\Framework\v4.0.30319
目录中调用了 aspnet_regiis。从64 位版本
调用它时,命令报告成功。%Windows%\Microsoft.Net\Framework64\v4.0.30319
尽管如此,错误信息还是会有帮助的......
编辑:
除非您有用户配置文件,否则密钥容器似乎不可用。当我们在另一台服务器上允许使用“以服务登录”的帐户访问密钥容器时,它失败了 - 即使它属于管理员组。当我们以物理方式登录并创建用户配置文件时,密钥容器做过变得可用。