返回首页
当前位置: 主页 > 编程语言 > C#教程 >

未能打开 RSA 密钥容器(System.Security.Cryptography.Utils.CreateProvHandle

时间:2017-12-11 22:47来源:电脑教程学习网 www.etwiki.cn 编辑:admin

Asp.net 开发的网站,Web.config 中的信息(特别是连接数据库的字符串)都是明文,很容易暴露数据库名、登录用户名和密码,所以都要对敏感信息进行加密。.Net 提供 RSA 加密,使用它可以完成对 Web.config 的加密。

  加密 Web.config 后是安全了,但也容易出问题。例如,RSA 加密只有在本机才能解密,网站迁移后就不能再解密,除非导出密钥并导入到迁入的服务器;还有一个常常出现的问题:未能打开 RSA 密钥容器(System.Security.Cryptography.Utils.CreateProvHandle),对于这个问题,有时设置一个文件夹权限就解决了,有时却不行,解决起来还有点麻烦。

 

  未能打开 RSA 密钥容器(System.Security.Cryptography.Utils.CreateProvHandle)解决办法

  1、这个问题大多是没有对文件夹 MachineKeys 的读写权限造成的,所以只把“读取、写入”权限分配给它,问题就可以解决,步骤如下:

  A、打开 C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA 文件夹,右键 MachineKeys 文件夹选择“属性”,如图1所示: 

未能打开 RSA 密钥容器

图1

 

  B、在打开的“MachineKeys 属性”窗口中, 选择“安全”选项卡,如图2所示:

 System.Security.Cryptography.Utils.CreateProvHandle错误

图2

     C、Windows 2008 以上系统单击“编辑”(Windows 2003 就不用了),打开权限窗口如图3所示:

RSA 密钥容器MachineKeys读写权限

图3

  D、Windows 2008 以上系统添加 IIS_IUSRS 用户,Windows 2003 添加 IIS_WPG 用户,分配“修改、读取”权限给它;一般来说,生成密钥的时候(加密的时候)给“修改”权限,解密的时候只需要“读取”权限。

  添加 IIS_IUSRS(IIS_WPG)用户方法:

  单击图3中的“添加” → 高级 → 立即查找 → 双击“搜索结果”中的 IIS_IUSRS(IIS_WPG)用户 → 确定。

 

 

  2、如果给 MachineKeys 文件夹添加“修改”权限还不行,可以在 IIS 的应用程序池中把“预定义用户”改“本地系统”(注:要降低安全性),步骤如下:

  “开始”菜单 → 管理工具 → Internet 信息服务 → 展开“Internet 信息服务”下面的“应用程序池” → 右键“应用程序池(如DefaultAppPool)” → 属性 → “标识”选项卡 → “预定义用户”选择“本地系统”如图4所示:

IIS预定义用户,本地系统

图4

------分隔线----------------------------
标签(Tag):c#
------分隔线----------------------------
推荐内容
猜你感兴趣