セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護 SSL を使用して Web サービスを呼び出す方法
J.D. Meier, Alex Mackman, Michael Dunner, and Srinath Vasireddy
Microsoft Corporation
November 2002
日本語版最終更新日 2003 年 3 月 17 日
Microsoft® ASP.NET
Microsoft Visual Studio® .NET
Microsoft Windows® 2000
全体の概要については、「セキュリティ保護された ASP.NET アプリケーションの構築」の開始ページを参照してください。
要約 : SSL を使用すると、Web サービスとの間で送受信されるメッセージの整合性と機密性が保証されます。ここでは、Web サービスで SSL を使用する方法について説明します。
目次
SSL (Secure Sockets Layer) を必要とするように Web サービスを設定し、クライアントとサービスとの間で送受信される機密データを保護することができます。SSL はメッセージの整合性と機密性を確保するための機能です。
- メッセージの整合性 メッセージが転送中に改ざんされないようにします。
- メッセージの機密性 メッセージが転送中に他者に読まれないようにします。
ここでは、SSL を必要とするように Web サービスを設定する方法、および HTTPS プロトコルを使用して ASP.NET クライアント アプリケーションから Web サービスを呼び出す方法について説明します。
メモ ここで取り上げる情報は、ASP.NET および IIS が (.NET リモート処理テクノロジを使用して) ホストするリモート オブジェクトにも適用されます。
必要条件
ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、スキル、知識、サービス パックなどの要件は、以下のとおりです。
- Microsoft® Windows® 2000 Server オペレーティング システム
- Microsoft Visual Studio® .NET 開発システム
- サーバー証明書がインストールされている Web サーバー
Web サーバー証明書のインストールの詳細については、「Web サーバー上で SSL を設定する方法」を参照してください。
また、Microsoft Visual C#® 開発ツールを使用した ASP.NET Web 開発に関する知識も必要です。
要約
ここでは、次の手順について説明します。
- シンプルな Web サービスを作成する。
- SSL を必要とする Web サービス仮想ディレクトリを構成する。
- ブラウザを使用して Web サービスをテストする。
- 証明機関の証明書をクライアント コンピュータにインストールする。
- Web アプリケーションを開発して、Web サービスを呼び出す。
1. シンプルな Web サービスを作成する
■ Web サービス ホスト コンピュータにシンプルな Web サービスを作成するには
- Visual Studio .NET を起動して、"SecureMath" という名前の新しい C# ASP.NET Web サービス アプリケーションを作成します。
- service1.asmx の名前を math.asmx に変更します。
- math.asmx.cs を開き、"Service1" を "math" に変更します。
- 次の Web メソッドを math クラスに追加します。
[WebMethod]
public long Add(long operand1, long operand2)
{
return (operand1 + operand2);
}
- Web サービスを作成するには、[ビルド] メニューの [ソリューションのビルド] をクリックします。
2. SSL を必要とする Web サービス仮想ディレクトリを構成する
Web サービスはインターネット インフォメーション サービス (IIS) 上で実行され、この IIS を利用して SSL がサポートされています。
この手順では有効なサーバー証明書が Web サーバーにインストールされていることを想定しています。Web サーバー証明書のインストールの詳細については、このガイドの「パート IV : 参照」の「Web サーバー上で SSL を設定する方法」を参照してください。
■ IIS を使用して、SSL 用の Web サービス仮想ディレクトリを構成するには
Web サービスをホストしているコンピュータで IIS を起動します。
SecureMath 仮想ディレクトリに移動します。
[SecureMath] を右クリックし、[プロパティ] をクリックします。
[ディレクトリのセキュリティ] タブをクリックします。
[セキュリティ保護された通信] の [編集] をクリックします。
[編集] ボタンをクリックできない場合は、Web サーバー証明書がインストールされていない可能性があります。
[保護されたチャンネル (SSL) を要求する] チェック ボックスをオンにします。
[OK] をクリックし、もう一度 [OK] をクリックします。
[継承/優先] ダイアログ ボックスで [すべて選択] をクリックします。次に、[OK] をクリックして [SecureMath のプロパティ] ダイアログ ボックスを閉じます。
これにより、仮想ディレクトリのルート内にあるすべてのサブディレクトリに対して、新しいセキュリティ設定が適用されます。
3. ブラウザを使用して Web サービスをテストする
ここでは、Web サーバー証明書が有効かどうか、およびクライアント コンピュータに信頼された証明機関 (CA) が発行したものかどうかを確認します。
■ SSL を使用して Internet Explorer から Web サービスを呼び出すには
クライアント コンピュータで Internet Explorer を起動し、HTTPS を使用して Web サービスを参照します。次に、例を示します。
https://WebServer/securemath/math.asmx
Web サービスのテスト ページがブラウザに表示されます。
Web サービスのテスト ページが正しく表示されたら Internet Explorer を閉じて、「5. Web アプリケーションを開発して、Web サービスを呼び出す」に進んでください。
図 1 のような [セキュリティの警告] ダイアログ ボックスが表示された場合は、[証明書の表示] をクリックして Web サーバー証明書を発行した CA の身元情報を表示します。クライアント コンピュータに、この CA の証明書をインストールする必要があります。この手順については、「4. 証明機関の証明書をクライアント コンピュータにインストールする」で説明します。
Internet Explorer を閉じます。
図 1 [セキュリティの警告] ダイアログ ボックス
4. 証明機関の証明書をクライアント コンピュータにインストールする
ここでは、証明書発行機関である CA の証明書を、信頼できるルート証明機関としてクライアント コンピュータにインストールします。クライアント コンピュータがサーバー証明書を認定するためには、証明書を発行する CA を信頼しなければなりません。CA が信頼されていれば、[セキュリティの警告] ダイアログ ボックスは表示されません。
■ Microsoft 証明書サービスを Windows ドメイン内で CA として使用する場合
Web サーバー証明書が Microsoft 証明書サービス証明機関によって発行された場合にのみ、以下の手順を実行します。それ以外の場合は、CA の .cer ファイルが既にあるので手順 8. に進んでください。
Internet Explorer を起動し、http://hostname/certsrv を参照します。"hostname" の部分は、サーバー証明書を発行する Microsoft 証明書サービスを実行するコンピュータの名前になります。
[CA 証明書または証明書失効リストの取得] をクリックし、[次へ] をクリックします。
[この CA 証明書のパスをインストールしてください] をクリックします。
[ルート証明書ストア] ダイアログ ボックスで [はい] をクリックします。
HTTPS を使用して Web サービスを参照します。次に、例を示します。
https://WebServer/securemath/math.asmx
今度は [セキュリティの警告] ダイアログ ボックスは表示されず、Web サービスのテスト ページが正しくブラウザに表示されます。
CA の証明書は、個人用の信頼されたルート証明書ストアにインストールされています。ASP.NET ページから Web サービスを正常に呼び出せるようにするには、その CA の証明書を自分のコンピュータの信頼されたルート ストアに追加する必要があります。
もう一度、手順 1. と 2. を実行し、[CA 証明書のダウンロード] をクリックして、自分のローカル コンピュータのファイルにその証明書を保存します。
CA の証明書ファイル (.cer) が格納されたので、残りの手順を実行します。
タスク バーの [スタート] をクリックし、[ファイル名を指定して実行] をクリックします。
「mmc」と入力し、[OK] をクリックします。
[コンソール] メニューの [スナップインの追加と削除] をクリックします。
[追加] をクリックします。
[証明書] をクリックし、次に [追加] をクリックします。
[コンピュータ アカウント] をクリックし、[次へ] をクリックします。
[ローカル コンピュータ (このコンソールを実行しているコンピュータ)] をクリックし、[完了] をクリックします。
[閉じる] をクリックし、[OK] をクリックします。
MMC スナップインの左側のペインで、[証明書 (ローカル コンピュータ)] を展開します。
[信頼されたルート証明機関] を展開します。
[証明書] を右クリックし、[すべてのタスク] をクリックし、[インポート] をクリックします。
[証明書のインポート ウィザード] ダイアログ ボックスで [次へ] をクリックします。
CA が発行した .cer ファイルへのパスとファイル名を入力します。
[次へ] をクリックします。
[証明書をすべて次のストアに配置する] をクリックし、[参照] をクリックします。
[物理ストアを表示する] チェック ボックスをオンにします。
一覧の [信頼されたルート証明書] を展開し、[ローカル コンピュータ] をクリックします。
[OK] をクリックし、[次へ] をクリックし、[完了] をクリックします。
[OK] をクリックして、確認のメッセージ ボックスを閉じます。
MMC スナップインで [証明書] フォルダを最新の情報に更新し、CA の証明書が一覧にあることを確認します。
MMC スナップインを閉じます。
5. Web アプリケーションを開発して、Web サービスを呼び出す
ここではシンプルな ASP.NET Web アプリケーションを作成します。この ASP.NET Web アプリケーションはクライアント アプリケーションとして使用し、Web サービスを呼び出します。
■ シンプルな ASP.NET Web アプリケーションを作成するには
Web サービス クライアント コンピュータ上で、"SecureMathClient" という名前の新しい C# ASP.NET Web アプリケーションを作成します。
Web サービスへの Web 参照 (HTTPS を使用) を追加します。
ソリューション エクスプローラで [参照設定] を右クリックし、[Web 参照の追加] をクリックします。
[Web 参照の追加] ダイアログ ボックスで、Web サービスの URL を入力します。必ず HTTPS の URL を使用するようにしてください。
メモ HTTPS を使用しない Web サービスへの Web 参照が既に設定されている場合は、生成済みのプロキシ クラス ファイルを手動で編集し、Url プロパティを設定するコード行を HTTP URL から HTTPS URL に変更します。
[参照の追加] をクリックします。
WebForm1.aspx.cs を開き、次の using ステートメントを既存の using ステートメントの下に追加します。
using SecureMathClient.WebReference1;
デザイナ モードで WebForm1.aspx を表示し、図 2 で示すように、次の ID を使用したフォームを作成します。
オペランド 1
オペランド 2
結果
追加
図 2 WebForm1.aspx フォーム
[追加] ボタンをダブルクリックして、ボタン クリック イベント ハンドラを作成します。
そのイベント ハンドラに次のコードを追加します。
private void add_Click(object sender, System.EventArgs e)
{
math mathService = new math();
int addResult = (int) mathService.Add( Int32.Parse(operand1.Text),
Int32.Parse(operand2.Text));
result.Text = addResult.ToString();
}
[ビルド] メニューの [ソリューションのビルド] をクリックします。
アプリケーションを実行します。加算する 2 つの数字を入力し、[追加] ボタンをクリックします。
Web アプリケーションが SSL を使用して Web サービスを呼び出します。