gpt4 book ai didi

c# - ASP.NET 加密 - aspnet_regiis - 农场

转载 作者:太空狗 更新时间:2023-10-30 00:20:59 27 4
gpt4 key购买 nike

我们有使用“NT Authority\Network Service”的网站。

Response.Write(WindowsIdentity.GetCurrent().Name); 

我们目前正在使用以下命令来加密配置文件。

aspnet_regiis -pc "NetFrameworkConfigurationKey"
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service"
aspnet_regiis.exe -pef "connectionStrings" "C:\WebAppLocation\Folder"

注意:我们没有使用“-exp”。当我们使用“-exp”时,它不会创建 RSA key 容器。

如您所见,我们使用的是默认键 - NetFrameworkConfigurationKey。我们的网站有一个负载平衡器。 Webserver1(W1)和WebServer2(W2)可用。

如果我遵循上述命令,我们将在 W1 和 W2 上使用单独的 key 。然而,该网站使用这种方法。

这种方法是否足够? 它有任何缺点或安全漏洞吗?它会在任何情况下失败吗?

注意:机器 key 已添加到我们的 web.config 中。在两个配置中都是相同的。但是,我们的 configProtectedData 不在 Web.Config 中。另外,我认为,NetFrameworkConfigurationKey 在两个服务器中都会有所不同。

我已阅读以下有关 Web 场场景中加密的 msdn 文章。 http://msdn.microsoft.com/en-us/library/ff650304.aspx

最佳答案

我觉得你没有做对所有事情。首先,这里有两个问题:

  1. 确保 machineKey 在两个网络服务器上相同。
  2. 确保在两台服务器的 key 容器中安装相同的 RSA 私钥,以便每台服务器都可以解密加密的配置。

这些是不同的问题:ma​​chineKey 与加密/解密您要保护的配置部分无关。

因此,首先使用 aspnet_regiis -pc 命令创建一个新的 RSA key 容器,它失败的原因是您指定的容器名称已经存在,因为它是默认名称。此容器中的 key 对不可导出,因此您需要创建一个新的 key 容器并指定 -exp 开关以表示 key 对可导出。

aspnet_regiis -pc "MyDeploymentKeyContainer" -exp

然后将 key 导出到文件,包括私钥:私钥用于解密配置部分,因此 Web 服务器将需要它。

aspnet_regiis -px "MyDeploymentKeyContainer" deploykey.xml -pri

现在将配置部分添加到您的 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>

然后加密指定提供者名称的 web.config 部分,如上所示(这里是“DeploymentProvider”)

aspnet_regiis -pef "connectionStrings" "C:\WebAppLocation\Folder" -prov "DeploymentProvider"

现在您需要将应用程序部署到两台服务器并导入您之前导出到文件的 RSA key 容器。复制文件并在每个服务器上运行:

aspnet_regiis -pi deploykey.xml

完成后,从服务器上删除文件 - 您不希望它闲置。最后,授予运行您的 Web 应用程序的应用程序池的用户帐户访问两个 Web 服务器上的 key 容器的权限。

aspnet_regiis -pa "MyDeploymentKeyContainer" SomeDomain\SomeAccount

关于c# - ASP.NET 加密 - aspnet_regiis - 农场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com