如果开发人员在自己的机器上使用 RSAProtectedConfigurationProvider 加密连接字符串 app.config 部分,然后将其部署到用户的工作站,那么该用户的工作站(或服务器,就此而言)是否可以自动解密连接字符串?
是否需要某种 key 导出/安装?这是如何运作的? 我意识到它不是防弹的。 我正在寻找有关部署是否容易和/或使用此类加密连接字符串的建议。
最佳答案
有可能的。有 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
当然,在使用加密时,您只是将保护数据(您的连接字符串)的问题替换为保护 key 的问题。
在您的示例中,正如您所知,因为您说您知道它不是防弹的,所以用户将需要访问 key 容器,以便能够解密加密的连接字符串。
此外,任何持有包含导出 key 对的 XML 文件的人都可以这样做。
更新
部署过程类似于:
使用 protected 配置提供程序加密的部分,例如
RSAProtectedConfigurationProvider
将自动解密,前提是运行应用程序的 Windows 身份对 RSA key 容器具有读取权限。
关于.net - 部署通过 app.config 中的 RSAProtectedConfigurationProvider 加密的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9408113/