是否可以从web.config加密指定为configSource的配置文件?

时间:2016-11-17 09:12:55

标签: asp.net iis encryption web-config aspnet-regiis.exe

我的web.config中有自定义部分我需要加密。此自定义配置部分使用configSource属性指向单独的配置文件(因为此文件不受源代码控制),我希望对此单独的配置文件进行加密。使用aspnet_regiis.exe加密此部分我没有运气。

我想要实现的目标是什么?

我的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="protectedAppSettings" type="System.Configuration.NameValueSectionHandler, System,Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />       
    </configSections>       
    <protectedAppSettings configSource="config\EnvironmentConfigurations\ProtectedAppSettings.config" />
  </configuration>

我的自定义配置文件:

<?xml version="1.0" encoding="utf-8"?>
<protectedAppSettings>  
  <add key="XXX" value="xxx"/>
</protectedAppSettings>

我已将aspnet_regi添加到我的路径中,因此我可以从我站点的根目录中调用它。这是我正在执行的命令:

aspnet_regiis -pef protectedAppSettings ""

我从这个命令得到的输出告诉我加密成功

我发现this link表示它应该正常工作但它不适合我..

1 个答案:

答案 0 :(得分:5)

这是因为我用来定义配置部分的类型。虽然没有文档证明它,但似乎NameValueSectionHandler类型在用于配置源时不加密。解决方案是将类型更改为System.Configuration.AppSettingsSection并且加密正常工作