LCJ*_*LCJ 4 .net c# asp.net encryption aspnet-regiis.exe
我们的网站使用"NT Authority\Network Service".
Response.Write(WindowsIdentity.GetCurrent().Name);
Run Code Online (Sandbox Code Playgroud)
我们目前正在使用以下命令来加密配置文件.
aspnet_regiis -pc "NetFrameworkConfigurationKey"
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service"
aspnet_regiis.exe -pef "connectionStrings" "C:\WebAppLocation\Folder"
Run Code Online (Sandbox Code Playgroud)
注意:我们没有使用"-exp".当我们使用"-exp"时,它不会创建RSA密钥容器.
如您所见,我们使用默认密钥-NetFrameworkConfigurationKey.我们的网站有一个负载均衡器.Webserver1(W1)和WebServer2(W2)可用.
如果我按照上面提到的命令,我们将在W1和W2上使用单独的键.然而,该网站使用这种方法.
这种方法是否足够?是否有任何缺点或安全漏洞?它会在任何情况下失败吗?
注意:我们的web.config中添加了机器密钥.两个配置都是一样的.但是,我们的configProtectedData不在Web.Config中.另外,我认为,NetFrameworkConfigurationKey在两个服务器中都会有所不同.
我已经在Web场景方案中阅读了以下用于加密的msdn aricle. http://msdn.microsoft.com/en-us/library/ff650304.aspx
Ste*_*ham 10
就像你已经正确完成所有事情一样,我听不到声音.首先,这里有两个问题:
machineKey两个Web服务器上的相同.这些是不同的问题:machineKey与加密/解密您要保护的配置部分无关.
因此,首先aspnet_regiis -pc使用该命令创建一个新的RSA密钥容器,并且它失败的原因是您指定的容器名称已经存在,因为它是默认值.此容器中的密钥对不可导出,因此您需要创建一个新密钥容器并指定-exp开关以表示密钥对是可导出的.
aspnet_regiis -pc "MyDeploymentKeyContainer" -exp
Run Code Online (Sandbox Code Playgroud)
然后将密钥导出到文件,包括私钥:私钥用于解密配置部分,以便Web服务器需要它.
aspnet_regiis -px "MyDeploymentKeyContainer" deploykey.xml -pri
Run Code Online (Sandbox Code Playgroud)
现在将config部分添加到web.config并保存.
<configProtectedData>
<providers>
<add keyContainerName="MyDeploymentKeyContainer"
useMachineContainer="true"
description="Uses RsaCryptoServiceProvider to encrypt and decrypt"
name="DeploymentProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</configProtectedData>
Run Code Online (Sandbox Code Playgroud)
然后加密web.config部分,指定提供者名称,如上所示(此处为"DeploymentProvider")
aspnet_regiis -pef "connectionStrings" "C:\WebAppLocation\Folder" -prov "DeploymentProvider"
Run Code Online (Sandbox Code Playgroud)
现在,您需要将应用程序部署到两个服务器,并导入先前导出到该文件的RSA密钥容器.复制文件并在每个服务器上运行:
aspnet_regiis -pi deploykey.xml
Run Code Online (Sandbox Code Playgroud)
一旦完成,从服务器删除文件 - 你不希望它挂起.最后,为运行Web应用程序的应用程序池的用户帐户授予对两个Web服务器上的密钥容器的访问权限.
aspnet_regiis -pa "MyDeploymentKeyContainer" SomeDomain\SomeAccount
Run Code Online (Sandbox Code Playgroud)