要加密服务器场和单个服务器中的两个站点上的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是否因使用机器密钥而不太可能无法更改?我应该使用自己的钥匙,以便更改它们吗?对于服务器场和单个服务器,建议使用哪种解决方案?或者是否有更好的方法来加密这些部分而无需更改或编写任何代码?
答案 0 :(得分:1)
对于单个服务器,您可以重用ASP.NET安装的密钥容器,如果我没记错,它被称为NetFrameworkConfigurationKey
,您只需要确保为该帐户运行ASP.NET站点密钥容器的适当权限。
对于Web Farm,最好在计算机中创建自定义密钥容器,然后将其导出到Web场中的所有其他计算机,这样您就可以重用相同的加密配置文件,从而节省了加密文件的时间。每个Web Farm机器。 但是,这不是强制性的,您可以部署未加密的配置文件,并使用每台计算机的ASP.NET默认密钥容器在每台计算机中对其进行加密。
问题标题也有点误导,在加密时你应该总是使用一个完善的库而不是自己定制的加密逻辑,这很难容易出错。
在使用自定义密钥容器或重用ASP.NET安装的容器与RsaProtectedConfigurationProvider
方面,所提供的安全级别没有区别。