2012-02-23 44 views
4

如果开发加密自己的机器上使用RSAProtectedConfigurationProvider连接字符串的app.config部分,而这随后被部署到用户的工作站上,可以将该用户的工作站(或服务器,用于那件事),自动解密连接字符串?部署的连接字符串

会某种重要的出口/安装的需要?这个怎么用? 我意识到它不是防弹的。我在寻找关于部署是否容易和/或使用这种加密连接字符串的建议。

回答

7

这是可能的。有API来做到这一点(看System.Security.Cryptography命名空间),或在命令行中,你可以使用ASPNET_REGIIS:

aspnet_regiis -pc -exp : create an exportable key pair 
aspnet_regiis -px : export an RSA key pair to an XML file 
aspnet_regiis -pi : import an RSA key pair from an XML file 
aspnet_regiis -pa : add access for an account to a key container 

当然,使用加密时,你只是代保护数据的问题(你的连接字符串)由保护密钥的问题。

在你的榜样,因为你,因为你说你知道这不是防弹的都知道,用户将需要访问密钥容器,以便将能够解密加密的连接字符串。

此外,人谁得到包含导出密钥对XML文件的保持就可以这样做。

UPDATE

部署过程会是这样的:

  • 对开发商建立开发人员工作站上的导出密钥(ASPNET_REGIIS -pc -exp)
  • 加密配置部分使用此密钥的工作站
  • 将密钥导出到XML文件(aspnet_regiis -px)
  • XML文件复制到目标机器
  • 导入从目标机器上的XML文件的密钥(ASPNET_REGIIS -pi)
  • 给用户帐户的读访问目标计算机上的按键(ASPNET_REGIIS-PA)

使用受保护的配置提供程序(如RSAProtectedConfigurationProvider)加密的节将自动解密,前提是运行该应用程序的Windows标识具有对RSA密钥容器的读取权限。

+0

谢谢。你能否详细说明这个关键容器?这是我需要知道的 - 这是如何从开发人员工作站部署到目标机器的?目标机器如何自动解密? – 2012-02-23 16:13:44

+0

@PittsburghDBA - 查看更新。 – Joe 2012-02-23 18:58:00

+0

太棒了。谢谢。 – 2012-02-23 21:19:19