【问题标题】:How to encrypt web.config with AES instead of 3DES如何使用 AES 而不是 3DES 加密 web.config
【发布时间】:2018-07-14 23:32:54
【问题描述】:

我目前正在尝试使用 aspnet_regiis 来加密 web.config 文件。虽然它使用 RSA 加密密钥,但用于加密 web.config 文件的加密方法是 3DES,NIST 不再建议使用。那么,有谁知道如何使用 AES 加密 web.config 文件?奖金,如果可能的话,我将如何设置密钥大小(例如,128、256 ... 2048 位)?

我查看了以下链接及其附带的链接,但没有成功:

Change Microsoft Config File Encryption Method From TripleDES

RSACryptoServiceProvider and Web.config encryption

【问题讨论】:

标签: c# asp.net asp.net-mvc encryption cryptography


【解决方案1】:

默认情况下,asp.net 提供两个提供程序:

RSAProtectedConfigurationProvider

DPAPIProtectedConfigurationProvider

如果您不能使用另一个,则必须实现您的自定义提供程序。

然后,注册您的提供商:

<providers>
  <add keyContainerName="CustomKeys" 
           useMachineContainer="true"
           description="My custom provider"
           name="CustomProvider" type="MyApp.MyCustomProtectedConfigurationProvider" />
  </providers>

并使用它:

aspnet_regiis -pe "connectionStrings" -app "/MyApp" -prov "CustomProvider"

This 链接有一个如何实现配置提供程序的示例。

【讨论】:

  • 是否可以为 AES 密钥创建 KeyContainer?在本例中,我创建了一个名为 AesProtectedConfigurationProvider 的自定义提供程序。 Microsoft 的讨论假设您使用 RSAProtectedConfigurationProvider。
  • 您是否在指定您的 customProvider 后尝试创建 KeyContainer? aspnet_regiis -pc "YourKey" –exp ,然后在您的提供者声明中添加一个属性 keyContainerName="YourKey"。
  • 我做到了,我在配置文件中更新了 KeyContainer 对“YourKey”的引用,而不是文件路径。但是当我尝试加密 web.config 时,我收到以下错误: 找不到文件 'C:\Windows\System32\YourKey' 我用来创建 KeyContainer 的两个命令如下: 1.) 创建 KeyContainer : aspnet_regiis -pc "YourKey" -exp 2.) 注册用户: aspnet_regiis -pa "YourKey" "DOMAIN\UserAcct" 我通过 -pa 命令添加了应用程序身份帐户以及我自己的帐户,但没有成功。我错过了什么还是我做错了什么?
  • @JWeezy,也许是因为您试图授予对用户帐户的访问权限并将 KeyContainer 创建为机器级别。尝试添加-pku 来创建和授予命令以指定用户级容器。
  • 这不起作用 - 我仍然遇到同样的错误。自从我尝试创建用户级容器以来,我确实设置了 useMachineContainer="false"。是否可以为我的 AES 保护配置提供程序创建密钥容器?注意:我在管理员模式下运行 CMD 窗口。
猜你喜欢
  • 2012-02-05
  • 2010-09-06
  • 2015-03-13
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
相关资源
最近更新 更多