首页 文章

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

提问于
浏览
4

如果开发人员在自己的计算机上使用RSAProtectedConfigurationProvider加密连接字符串app.config部分,然后将其部署到用户的工作站,那么该用户的工作站(或服务器)是否可以自动解密连接字符串?

是否需要某种关键的出口/安装?这是如何运作的? I realize that it's not bulletproof. 我正在寻找关于部署是否容易和/或使用这种加密连接字符串的建议 .

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文件的人都可以这样做 .

    UPDATE

    部署过程如下:

    • 在开发人员工作站上创建可导出的密钥(aspnet_regiis -pc -exp)

    • 使用此密钥加密开发人员工作站上的配置部分

    • 将密钥导出到XML文件(aspnet_regiis -px)

    • 将XML文件复制到目标计算机

    • 从目标计算机上的XML文件导入密钥(aspnet_regiis -pi)

    • 授予用户帐户对目标计算机上密钥的读取权限(aspnet_regiis -pa)

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

相关问题