我应该使用RSAProtectedConfigurationProvider还是My Own Provider?

时间:2011-12-07 15:19:27

标签: asp.net encryption web-config rsa

要加密服务器场和单个服务器中的两个站点上的web.config部分,根据我的理解,使用以下命令将使用本地计算机密钥加密我的web.config连接字符串

aspnet_regiis.exe -pef“connectionStrings”“C:\ website \ mywebsite”

但是我可以使用-pc运算符创建自己的键,并使用类似的东西:

 <configProtectedData>
  <providers>
     <add name="MyProvider"
          type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
                Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
                processorArchitecture=MSIL"
          keyContainerName="MyKeys" 
          useMachineContainer="true" />
  </providers>

我不明白的是有什么区别? RSAProtectedConfigurationProvider是否因使用机器密钥而不太可能无法更改?我应该使用自己的钥匙,以便更改它们吗?对于服务器场和单个服务器,建议使用哪种解决方案?或者是否有更好的方法来加密这些部分而无需更改或编写任何代码?

1 个答案:

答案 0 :(得分:1)

对于单个服务器,您可以重用ASP.NET安装的密钥容器,如果我没记错,它被称为NetFrameworkConfigurationKey,您只需要确保为该帐户运行ASP.NET站点密钥容器的适当权限。

对于Web Farm,最好在计算机中创建自定义密钥容器,然后将其导出到Web场中的所有其他计算机,这样您就可以重用相同的加密配置文件,从而节省了加密文件的时间。每个Web Farm机器。 但是,这不是强制性的,您可以部署未加密的配置文件,并使用每台计算机的ASP.NET默认密钥容器在每台计算机中对其进行加密。

问题标题也有点误导,在加密时你应该总是使用一个完善的库而不是自己定制的加密逻辑,这很难容易出错。

在使用自定义密钥容器或重用ASP.NET安装的容器与RsaProtectedConfigurationProvider方面,所提供的安全级别没有区别。