私はかなり長い間、dev_entlib.config という外部ファイルに保存されているアプリケーション ブロックを暗号化する方法を見つけようとしてきました。
デフォルトの保護プロバイダーを使用してブロックを暗号化できることを entlib (4.1) で確認できますが、このアプリケーションを別のサーバーにデプロイする必要があるため、アプリケーション ブロックの暗号化に使用する keyProvider をそれらのサーバーにエクスポートする必要があります。サーバー。
これまでに行ったことは、任意のフォルダー (およびすべてのターゲット サーバー) の .net v2.0* 内の machine.config ファイルに、カスタムの保護された構成プロバイダーを追加することです。
カスタムプロバイダーはこのようなものです
<add name="MyCompanyProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,
System.Configuration, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="MyKey"
useMachineContainer="true" />
これは、他の既定のプロバイダーと並んで適切に配置され、Entlib 構成ツールで設計時のサポートさえも備えています。次に、暗号化するブロックごとに保護プロバイダーを選択します。
dev_entlib.config を見ると、実際にブロックがプロバイダーで暗号化されていることがわかります。私のプロバイダーは私のキーコンテナを使用しています。したがって、ブロックはキー コンテナーを使用して暗号化する必要があります。次に、次を使用して「MyKey」をxmlファイルにエクスポートします。
c:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -px "MyKey" "C:\keys.xml" -pri
Exporting RSA Keys to file...
Succeeded!
次に、このキー ファイルが sysTest サーバーにコピーされ、そこでインポートされ、"NT Authority\Network Services" および "ASPNET" へのアクセス権が付与されます。
次に、暗号化された web.config と dev_entlib.config をコピーし、.net ConfigurationManager を使用して ConnectionStrings コレクションを取得してページに表示する小さなページに接続文字列を表示しようとします。このページは IIS で実行されており、プロセスの ID は "NT Authority\Network Services" です。
問題は、それが機能しないことです!不正なデータ エラーまたは「プロバイダー MyCompanyProvider を使用して復号化に失敗しました」があります。
このアプローチは私には理にかなっているように思えますが、それでも失敗します。
誰か別の提案はありますか?