2012-01-08 131 views
1

我需要爲我們的ASP.Net 4.0項目加密我們web.config的一部分,但我們需要使用AES,默認情況下顯示爲Triple DES。我怎樣才能告訴它使用AES加密呢?如何使用aspnet_regiis選擇/強制執行A​​ES加密以加密web.config值?

在命令提示我執行以下命令:

aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp 
aspnet_regiis -pe "connectionStrings" -app "/<myapp>" 

我想我通過選擇適當的CSP(-csp)設置的加密方法,以AES但我還沒有能找到或圖取出正確的名稱。

和加密web.config中的線中的一個是:

<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> 

回答

2

提供商使用-prov參數ASPNET_REGIIS選擇。提供者使用configProtectedData部分在web/machine.config中註冊。爲了註冊AES你會使用這樣的:

<configProtectedData> 
    <providers> 
     <add name="AesProvider" 
      type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" 
      description="Uses an AES session key to encrypt and decrypt" 
      keyContainerName="iisConfigurationKey" cspProviderName="" 
      useOAEP="false" useMachineContainer="true" 
      sessionKey="aSessionKeyGoesHere" /> 
    </providers> 
</configProtectedData> 

在我的機器RSA和DPAPI是machine.config中預先配置的算法。

提供了AES提供註冊,你應該能夠使用加密一個配置節:

aspnet_regiis -pe "connectionStrings" -app "/<myapp>" -prov "AesProvider" 
+0

回覆:sessionKey =「aSessionKeyGoesHere」:這是關係到一個網絡請求的會議?我該如何設置這個值,或者我將如何計算或推導出適當的值? – 2012-01-08 16:09:34

+0

此外,我試圖在我的應用程序和machine.config中的web.config中實現這一點,我總是得到這個錯誤: 加密配置節... 無法從程序集中加載類型'Microsoft.ApplicationHost.AesProtectedConfigurationProvider' 'System.Configuration,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。 失敗! – 2012-01-08 16:23:32

+0

sessionKey是要使用的AES加密密鑰。 AesProtectedConfigurationProvider可能在框架歷史中的某個時刻從可用的加密提供程序中刪除,現在只有RSA和DPAPI是核心的一部分。我一直無法找到Aes提供程序的源代碼,除了它在一些舊的加密示例和machine.config示例中引用。 – PHeiberg 2012-01-09 08:28:46