指定受保護的組態提供者
更新:2007 年 11 月
您可以使用 ProtectedConfigurationProvider 類別 (Class) 加密和解密 Web.config 檔的區段。下列清單描述 .NET Framework 中包含的受保護組態提供者:
DpapiProtectedConfigurationProvider. 使用 Windows Data Protection API (DPAPI) 加密和解密資料。
RsaProtectedConfigurationProvider 使用 RSA 加密演算法加密和解密資料
兩個提供者都提供資料的增強式加密。然而,如果您打算在多個伺服器 (例如 Web 伺服陣列) 上使用相同的加密組態檔,則只有 RsaProtectedConfigurationProvider 能夠讓您匯出加密金鑰,然後在其他伺服器中匯入金鑰。
.NET Framework 也可以讓您定義自己的受保護組態提供者。如需詳細資訊,請參閱實作受保護的組態提供者。
設定受保護的組態提供者
您可以指定自己的受保護組態提供者,或是使用其中一個內建的 ASP.NET 提供者。根據預設,Machine.config 檔會指定下列受保護的組態提供者:
名為 RsaProtectedConfigurationProvider 的 RsaProtectedConfigurationProvider 執行個體。這會設定為預設提供者。
名為 DataProtectionConfigurationProvider 的 DpapiProtectedConfigurationProvider 執行個體。
您可以在組態檔的 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 的類型定義:
|
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 的類型定義:
|
description |
提供者執行個體的描述。 |
keyEntropy |
隨附在加密金鑰的應用程式專屬值,保護不讓其他應用程式能夠解密經過加密的資訊。如需詳細資訊,請參考 Windows Data Protection API (DPAPI) 之 CryptProtectData 方法的 OptionalEntropy 參數。 |
useMachineProtection |
true 為使用電腦專屬保護,false 為使用使用者帳戶專屬保護。當 true 時,在電腦上執行的任何處理序都能夠取消保護資料,並且建議您使用存取控制清單 (ACL) 限制加密資料的存取。如需詳細資訊,請參閱 Windows Data Protection API (DPAPI) 的 CryptProtectData 方法,其 dwFlags 參數的 CRYPTPROTECT_LOCAL_MACHINE 值。 |