如果开发人员在自己的计算机上使用 RSAProtectedConfigurationProvider 加密连接字符串 app.config 部分,并且随后将其部署到用户的工作站,则该用户的工作站(或服务器)是否可以自动解密连接字符串?
是否需要某种密钥导出/安装?这是如何运作的?我意识到它不是防弹的。我正在寻求有关部署是否容易和/或使用此类加密连接字符串的建议。
有可能的。有 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 密钥容器的读取权限,则将自动解密。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)