在app.config中部署使用RSAProtectedConfigurationProvider加密的连接字符串

4
如果开发人员在自己的计算机上使用RSAProtectedConfigurationProvider加密连接字符串app.config部分,并将其随后部署到用户的工作站,那么该用户的工作站(或服务器)是否可以自动解密连接字符串?是否需要某种密钥导出/安装?这是如何工作的?我知道它不是百分之百安全的。我想知道的是,这样加密的连接字符串是否容易部署和/或与之配合工作。
1个回答

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文件的人都可以这样做。
更新:
部署过程应该如下:
- 在开发者工作站上创建一个可导出的密钥(aspnet_regiis -pc -exp) - 使用此密钥在开发者工作站上加密配置部分 - 将密钥导出到XML文件中(aspnet_regiis -px) - 将XML文件复制到目标机器上 - 在目标机器上从XML文件中导入密钥(aspnet_regiis -pi) - 给用户帐户在目标机器上读取密钥的权限(aspnet_regiis -pa)
使用受保护的配置提供程序(例如RASProtectedConfigurationProvider)加密的部分将自动解密,前提是应用程序运行的Windows身份具有RSA密钥容器的读取权限。

谢谢。您能详细说明一下这个密钥容器吗?我需要知道的是 - 开发人员如何将其从开发工作站部署到目标机器?目标机器如何自动解密它? - Pittsburgh DBA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接