我们可以在web.config中加密外部appSettings和connectionStrings吗?

时间:2017-11-21 12:38:05

标签: asp.net security encryption web-config

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 <appSettings configSource="appSettings.config"/>
 <connectionStrings configSource="connections.config"/>
 <system.web>
 <compilation debug="true" />
 <authentication mode="Windows"/>
 <identity impersonate="true"/>
 </system.web>
</configuration>

web.config Web应用程序中使用了MVC以上。 我尝试使用 aspnet_regiis 使用RsaProtectedConfigurationProvider加密。但是,在Web.configappSettings存在于同一文件中的简单connectionStrings中,它无法正常工作。

我正在使用该命令加密web.config

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -pef "connectionStrings" "D:\WebApplication" -prov "AppEncryptionProvider". 

C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -pef "appSettings" "D:\WebApplication" -prov "AppEncryptionProvider".

但在Web应用程序中使用它时,它给出了如下错误:使用提供程序&#39; AppEncryptionProvider&#39;无法解密。来自提供程序的错误消息:系统找不到指定的文件。 (HRESULT异常:0x80070002)

Line 1:  <appSettings configProtectionProvider="AppEncryptionProvider">
Line 2:    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
Line 3:      xmlns="http://www.w3.org/2001/04/xmlenc#">
Line 4:      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />

1 个答案:

答案 0 :(得分:0)

是。您可以通过传递提供程序和站点名称,使用以下命令执行此操作。

aspnet_regiis -pe "appSettings" -prov "{0}" -site {1} -app "/"

其中:

  • {0}是web.config中指定的加密提供程序的名称。
  • {1}是您在IIS中的网站的ID

类似的问题: Encrypting AppSettings in file external to Web.Config