【问题标题】:Should I use RSAProtectedConfigurationProvider or My Own Provider?我应该使用 RSAProtectedConfigurationProvider 还是我自己的提供程序?
【发布时间】:2012-01-15 02:31:59
【问题描述】:

要加密场中两个站点和单个服务器上的 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 的安全性是否不如使用机器密钥且无法更改?我应该使用自己的密钥以便更改它们吗?哪个是场和单服务器的推荐解决方案?或者有没有更好的方法来加密这些部分而无需更改或编写任何代码?

【问题讨论】:

    标签: asp.net encryption web-config rsa


    【解决方案1】:

    对于单个服务器,您可以重用由 ASP.NET 安装的密钥容器,如果我没记错的话,它叫做 NetFrameworkConfigurationKey,您只需要确保为运行您的 ASP.NET 站点的帐户提供正确的密钥容器的权限。

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

    此外,问题标题有点误导,当涉及到加密时,您应该始终使用完善的库,而不是使用自己的自定义加密逻辑,这既难又容易出错。

    就使用自定义密钥容器或重用由 ASP.NET 安装的带有RsaProtectedConfigurationProvider 的容器而言,所提供的安全级别没有区别。

    【讨论】:

    • 对于 Web Farm 是否必须这样做,我可以在 Farm 中重复使用它,这会暴露哪些安全问题?
    • @User101,我更新了答案,强调不必在 Web Farm 中部署具有相同密钥的自定义容器。它只是更易于维护。
    • 谢谢 - 我没有使用我自己的自定义逻辑,它将使用 NetFrameworkConfigurationKey 或创建/导出/导入我自己的密钥。如果没有区别,我会选择默认的以方便使用!
    猜你喜欢
    • 1970-01-01
    • 2010-10-07
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多