方法 : 保護された構成プロバイダの構築と実行の例
更新 : 2007 年 11 月
このセクションのトピックには、保護された構成プロバイダのコード例が含まれます。この例のプロバイダは、TripleDESCryptoServiceProvider クラスを使用して、Web.config ファイルの構成セクションを暗号化および復号化します。
このトピックでは、例を構築してサンプル プロバイダを使用するように ASP.NET アプリケーションを構成する方法について説明します。この例の保護された構成プロバイダは、「保護された構成プロバイダの実装例」に Visual Basic と C# で記載されています。
サンプル プロバイダのビルド
Web.config ファイルのセクションは、Aspnet_regiis.exe ツールを使用して暗号化する必要があります。復号化は、明示的に Aspnet_regiis.exe ツールを使用するか、または ASP.NET によって実行時に自動的に実行できます。そのため、Aspnet_regiis.exe ツールと ASP.NET の両方に使用できるプロバイダの種類の例を作成する必要があります。この場合、最も簡単な実行方法は、厳密な名前を使用してプロバイダをコンパイルし、グローバル アセンブリ キャッシュ (GAC) に配置する方法です。
![]() |
---|
厳密名ツール (Sn.exe) とグローバル アセンブリ キャッシュ ツール (Gacutil.exe) は、Windows Software Development Kit (SDK) をインストールすると使用可能になります。詳細については、「厳密名ツール (Sn.exe)」および「グローバル アセンブリ キャッシュ ツール (Gacutil.exe)」を参照してください。 |
サンプル プロバイダを構築するには
Windows コマンドラインで、次のコマンドを実行します。
Sn.exe -k keys.snk
これによって、厳密な名前のキー ペアが生成されます。
メモ :
コンパイラ コマンドを実行できない場合は、コマンドを実行する前に .NET Framework のパスを PATH 変数に追加する必要があります。Windows で、[マイ コンピュータ] アイコンを右クリックし、[プロパティ] をクリックします。次に、[詳細設定] タブで、[環境変数] をクリックします。[システム環境変数] の一覧の Path 変数をダブルクリックします。[変数値] ボックスで、既存の値の最後にセミコロン (;) を追加し、各自の .NET Framework のインストール パスを入力します。通常の場合、.NET Framework は Windows のインストール フォルダ (\Microsoft.NET\Framework\versionNumber) にインストールされます。
TripleDESProtectedConfigurationProvider (使用しているプログラミング言語によって、ファイル名拡張子は .vb または .cs) というプログラム ファイルを作成し、保護された構成プロバイダの実装例 からサンプル プロバイダのコードをコピーします。
プロバイダのサンプル コードをコンパイルし、次のコマンドを使用して生成されるアセンブリに厳密名のキーを割り当てます。
vbc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.vb /r:System.Configuration.dll /keyfile:keys.snk
csc /out:TripleDESProtectedConfigurationProvider.dll /t:library TripleDESProtectedConfigurationProvider.cs /r:System.Configuration.dll /keyfile:keys.snk
次のコマンドライン コマンドを使用して、アセンブリをグローバル アセンブリ キャッシュにインストールします。
gacutil.exe -i TripleDESProtectedConfigurationProvider.dll
メモ :
GAC からアセンブリを削除する場合は、Gacutil.exe ツールで次のコマンドを使用します。
gacutil.exe -u TripleDESProtectedConfigurationProvider
暗号キーの作成と格納
この例の TripleDES で保護された構成プロバイダは、テキスト ファイルに 16 進文字列として格納される暗号キーを使用して構成セクションを暗号化および復号化します。キー ファイルは、サンプル プロバイダに含まれるコードを使用して作成します。キーは、次の例のようにキー ファイルの最初の行に格納され、2 行目にはベクトル (IV) が格納されます。
EBBCB17E444EBB9EA2EA7EE3E0FD9E108C6E75A90101D017
8C979426981FD2A6
作成したキー ファイルはサーバー上の保護された場所に格納し、キー ファイルへのアクセス許可を ASP.NET アプリケーション ID、SYSTEM アカウント、および管理者に制限する必要があります。これによって、攻撃者がキーにアクセスして暗号化された情報を読み取ることを防止できます。
暗号キーを作成するには
CreateKey というコンソール アプリケーションを作成します。
次のコードをアプリケーションのメイン モジュールとしてコピーします。
Imports System Imports Samples.AspNet.ProtectedConfiguration Public Class CreateKey Public Shared Sub Main(args() As String) Dim filePath As String = args(0) Dim provider As TripleDESProtectedConfigurationProvider = _ New TripleDESProtectedConfigurationProvider() provider.CreateKey(filePath) Console.WriteLine("New TripleDES key written to '{0}'", filePath) End Sub End Class
using System; using Samples.AspNet.ProtectedConfiguration; public class CreateKey { public static void Main(string[] args) { string filePath = args[0]; TripleDESProtectedConfigurationProvider provider = new TripleDESProtectedConfigurationProvider(); provider.CreateKey(filePath); Console.WriteLine("New TripleDES Key written to '{0}'", filePath); } }
この例の保護された構成プロバイダには、ファイル パスを入力として受け取り、新しいキーを生成し、新しいキーを指定されたファイルに書き込むパブリック CreateKey メソッドが含まれます。コンソール アプリケーションのコードは、保護された構成プロバイダのインスタンスを作成して CreateKey メソッドを呼び出します。このコードはファイル パスをコマンド ライン引数として受け取り、指定された場所に新しいキー ファイルを作成します。
Windows コマンドラインで、次のような構文を使用してコンソール アプリケーションを実行します。
CreateKey "c:\WebSites\SampleApplication\App_Data\Keys.txt"
ASP.NET アプリケーションでのサンプル プロバイダの使用
プロバイダをコンパイルして暗号キーを作成した後に、プロバイダを使用するように ASP.NET アプリケーションを構成します。
ASP.NET アプリケーションでサンプル プロバイダを使用するには
Web サイトの Web.config ファイルを開きます。アプリケーションに Web.config ファイルがない場合、Web サイトのルート フォルダに Web.config というテキスト ファイルを作成して次の要素を追加します。
<?xml version="1.0"?> <configuration> <system.web> </system.web> </configuration>
configuration セクションで、system.web 要素のピアとして強調表示された次の要素を追加します。
<configuration> <configProtectedData> <providers> <add name="TripleDESProvider" type="Samples.AspNet.ProtectedConfiguration.TripleDESProtectedConfigurationProvider, TripleDESProtectedConfigurationProvider, Version=0.0.0.0, CultureInfo=neutral, PublicKeyToken=a5a9eb4fc5306403, processorArchitecture=MSIL" keyFilePath="c:\WebSites\SampleApplication\App_Data\Keys.txt" /> </providers> </configProtectedData> </configuration>
メモ :
前に作成したキー ファイルを格納した場所に keyFilePath 属性の値を変更します。
configuration セクションに、<connectionStrings> セクションおよび 1 つ以上の接続文字列を追加します。
SQL Server Northwind サンプル データベースの接続文字列を含む connectionStrings セクションの例を次に示します。SQL Server のインスタンス名は、SampleSQLServer と仮定しています。
<connectionStrings> <add name="NorthwindConnectionString" connectionString="Data Source=SampleSQLServer;Initial Catalog=Northwind;Persist Security Info=True;" Integrated Security=SSPI;" providerName="System.Data.SqlClient" /> </connectionStrings>
メモ :
connectionString の値を変更し、使用する SQL Server データベースの接続情報を追加します。
ファイルを保存して閉じます。
Windows コマンドラインで、次のコマンドを実行して Web.config ファイルの connectionStrings セクションを暗号化します。
aspnet_regiis.exe -pe "connectionStrings" -app "/SampleApplication" -prov "TripleDESProvider"
メモ :
SampleApplication は、暗号化をテストする Web アプリケーションの名前で置き換えます。
Web.config ファイルを開き、接続文字列が暗号化されていることを確認します。
Web アプリケーションで、暗号化された接続文字列を使用します。
たとえば、SqlDataSource コントロールを追加し、次の例のように、ConnectionString プロパティを "NorthwindConnectionString" に設定します。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT ProductName FROM Products"> </asp:SqlDataSource>
GridView コントロールなどのコントロールを SqlDataSource コントロールにバインドします。
ページを実行します。
データが期待どおりに表示されることを確認します。ASP.NET は、接続文字列を使用して Northwind データベースに接続する前に接続文字列を復号化しています。