加密并部署app.config

本文关键字:config app 部署 加密 | 更新日期: 2023-09-27 18:26:05

我阅读并测试了很多内容,以找到加密app.config并将其部署到不同机器的最佳实践。通常,我希望保护来自第三方的连接字符串的内容,并将应用程序部署到不同的机器上。我将手动配置每台机器。

我知道有几种方法,比如:

  • Aspnet_ Regis(RSAProtectedConfigurationProvider,DPAPIProtectedConfigurationProvider)绑定到机器、用户或自定义。RSA加密密钥。

  • 绑定到机器或用户的CCD_ 2。

  • 在第一次执行时对app.config进行加密。这是不安全的。

你推荐什么或什么是加密CCD_ 4并通过设置或使用copy&粘贴

加密并部署app.config

步骤1创建RSA密钥对

aspnet_regiis -pc yourkey -exp

步骤2导出XML文件中的密钥

aspnet_regiis -px yourkey keyfile.xml -pri

对于每台机器

步骤3导入您的集装箱

aspnet_regiis -pi yourkey keyfile.xml (see step 2)

对于每台机器

步骤4编辑machine.config(规范路径C:''Windows''Microsoft.NET''Framework[64|32]''v[Version]''config)

在下面的configProtectedData部分添加此元素,并设置defaultProvider="YourProvider"

<add name="YourProvider"
                type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                description="Uses RsaCryptoServiceProvider to encrypt and decrypt for my infrastucture"
                keyContainerName="yourkey"
                cspProviderName=""
                useMachineContainer="true"
                useOAEP="false" />

然后你可以在一台机器中加密并粘贴到另一台机器上,记住必须给用户特权

aspnet_regiis -pa yourkey [DOMAIN'USER]

管理员组已获得授权。

了解更多信息http://msdn.microsoft.com/en-us/library/yxw286t2(v=vs.90).aspx

当然,这些步骤可以放在powershell/批处理文件中

另一种通过代码加密connectionStrings部分的方法是

 var connectionStrings = ConfigurationManager.GetSection("connectionStrings") 
 if(!section.SectionInformation.IsProtected)
     connectionStrings.SectionInformation.ProtectSection("YourProvider");

在连接和客户端/服务器的场景中,我向您推荐了一种我在广域网中采用的解决方案,即不在app.config中分发连接字符串,而是在用户身份验证后,在可以是web服务或RESTful服务的服务中要求连接信息。

在步骤中或多或少就是

  1. 对用户进行身份验证
  2. 需要以用户名为参数的服务的连接信息(HTTPS协议)
  3. 服务返回连接字符串
  4. 应用程序在数据库连接

使用此解决方案,如果您有区域服务器或更多服务器,您可以选择用户连接的服务器

我希望对有所帮助

正如我在问题中已经提到的,有许多不同的方法可以加密配置文件。从更广泛的角度来看,我想描述一个额外的机会。具体的实施我就不多说了,更多的是概念。

使用msi安装程序中的自定义操作,您可以直接使用Windows Data Protection API(DPAPI)加密配置文件。为了确保第二个熵的安全,您可以使用模糊处理程序。因此,只有应用程序能够对配置文件进行加密。

优势

  • 相当安全
  • 无需机器配置
  • 在安装过程中插入凭据

缺点

  • 配置文件在安装程序中未加密。你必须保护它(权限)

请随时讨论并对此答案给出一些反馈。