指定受保護的組態提供者

更新:2007 年 11 月

您可以使用 ProtectedConfigurationProvider 類別 (Class) 加密和解密 Web.config 檔的區段。下列清單描述 .NET Framework 中包含的受保護組態提供者:

兩個提供者都提供資料的增強式加密。然而,如果您打算在多個伺服器 (例如 Web 伺服陣列) 上使用相同的加密組態檔,則只有 RsaProtectedConfigurationProvider 能夠讓您匯出加密金鑰,然後在其他伺服器中匯入金鑰。

.NET Framework 也可以讓您定義自己的受保護組態提供者。如需詳細資訊,請參閱實作受保護的組態提供者

設定受保護的組態提供者

您可以指定自己的受保護組態提供者,或是使用其中一個內建的 ASP.NET 提供者。根據預設,Machine.config 檔會指定下列受保護的組態提供者:

您可以在組態檔的 configProtectedData 區段中指定受保護的組態提供者。如果您想要使用自訂設定指定自己的提供者,可以使用 providers 項目的 add 項目宣告新的提供者執行個體。您可以使用 configProtectedData 項目的 defaultProvider 屬性 (Attribute),將提供者執行個體辨認為預設提供者。

下列程式碼範例會使用 SampleProvider 名稱設定 RsaProtectedConfigurationProvider 執行個體,並且將其設定為預設提供者。

<configuration>
  <configProtectedData defaultProvider="SampleProvider">
    <providers>
      <add name="SampleProvider" 
        type="System.Configuration.RsaProtectedConfigurationProvider, 
              System.Configuration, Version=2.0.0.0, Culture=neutral, 
              PublicKeyToken=b03f5f7f11d50a3a,
             processorArchitecture=MSIL"
        keyContainerName="SampleKeys" 
        useMachineContainer="true" />
    </providers>
  </configProtectedData>
</configuration>

當加密組態區段時,可以使用受保護的組態提供者執行個體名稱。如需詳細資訊,請參閱加密和解密組態區段

受保護的組態提供者選項

每個受保護的組態提供者都會公開 (Expose) 一些選項,您能在組態檔中使用提供者宣告的屬性設定這些選項。所有提供者都需要 type 和 description 屬性,以及提供者執行個體的 keyName。此外,選項對每個提供者類型而言都是唯一的。

下表說明 RsaProtectedConfigurationProvider 的組態選項。

Attribute

描述

type

受保護的組態提供者類型。下列程式碼範例說明 RsaProtectedConfigurationProvider 的類型定義:

type="System.Configuration.RsaProtectedConfigurationProvider,
      System.Configuration, Version=2.0. 0.0,
      Culture=neutral,
      PublicKeyToken=b03f5f7f11d0a3a,
      processorArchitecture=MSIL"

description

提供者執行個體的描述。

keyContainerName

用來加密或解密 Web.config 檔內容的 RSA 金鑰容器名稱。

注意事項:
ASP.NET 處理序必須能夠讀取指定的 RSA 金鑰容器。您可以使用 Aspnet_regiis.exe 工具搭配 -pa 參數授與 RSA 金鑰容器的存取權。如需詳細資訊,請參閱匯入和匯出受保護的組態 RSA 金鑰容器

useMachineContainer

如果 RSA 金鑰容器是電腦層級的金鑰容器則為 true;如果 RSA 金鑰容器是使用者層級的金鑰容器則為 false。如需詳細資訊,請參閱使用受保護的組態加密組態資訊

useOAEP

true 以便在加密和解密時使用 Optimal Asymmetric Encryption Padding (OAEP),否則就是 false。如需詳細資訊,請參閱 RSAOAEPKeyExchangeFormatter 類別。

cspProviderName

Windows 密碼編譯 API (crypto API) 的密碼編譯服務提供者 (CSP) 名稱。如需詳細資訊,請參閱 ProviderName

下表說明 DpapiProtectedConfigurationProvider 的組態選項。

Attribute

描述

type

受保護的組態提供者類型。下列程式碼範例說明 DpapiProtectedConfigurationProvider 的類型定義:

type="System.Configuration.DpapiProtectedConfigurationProvider,
      System.Configuration, Version=2.0.0.0,
      Culture=neutral,
      PublicKeyToken=b03f5f7f11d0a3a,
      processorArchitecture=MSIL"

description

提供者執行個體的描述。

keyEntropy

隨附在加密金鑰的應用程式專屬值,保護不讓其他應用程式能夠解密經過加密的資訊。如需詳細資訊,請參考 Windows Data Protection API (DPAPI) 之 CryptProtectData 方法的 OptionalEntropy 參數。

useMachineProtection

true 為使用電腦專屬保護,false 為使用使用者帳戶專屬保護。當 true 時,在電腦上執行的任何處理序都能夠取消保護資料,並且建議您使用存取控制清單 (ACL) 限制加密資料的存取。如需詳細資訊,請參閱 Windows Data Protection API (DPAPI) 的 CryptProtectData 方法,其 dwFlags 參數的 CRYPTPROTECT_LOCAL_MACHINE 值。

請參閱

工作

逐步解說:使用受保護的組態加密組態資訊

其他資源

使用受保護的組態加密組態資訊