Share via


セキュリティ保護された ASP.NET アプリケーションの構築 : 認証、認定、および通信のセキュリティ保護 SSL を使用して Web サービスを呼び出す方法

patterns and practices home

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 開発に関する知識も必要です。

要約

ここでは、次の手順について説明します。

  1. シンプルな Web サービスを作成する。
  2. SSL を必要とする Web サービス仮想ディレクトリを構成する。
  3. ブラウザを使用して Web サービスをテストする。
  4. 証明機関の証明書をクライアント コンピュータにインストールする。
  5. Web アプリケーションを開発して、Web サービスを呼び出す。

1. シンプルな Web サービスを作成する

■ Web サービス ホスト コンピュータにシンプルな Web サービスを作成するには

  1. Visual Studio .NET を起動して、"SecureMath" という名前の新しい C# ASP.NET Web サービス アプリケーションを作成します。
  2. service1.asmx の名前を math.asmx に変更します。
  3. math.asmx.cs を開き、"Service1" を "math" に変更します。
  4. 次の Web メソッドを math クラスに追加します。
[WebMethod]
public long Add(long operand1, long operand2)
{
return (operand1 + operand2);
}

  1. Web サービスを作成するには、[ビルド] メニューの [ソリューションのビルド] をクリックします。

2. SSL を必要とする Web サービス仮想ディレクトリを構成する

Web サービスはインターネット インフォメーション サービス (IIS) 上で実行され、この IIS を利用して SSL がサポートされています。

この手順では有効なサーバー証明書が Web サーバーにインストールされていることを想定しています。Web サーバー証明書のインストールの詳細については、このガイドの「パート IV : 参照」の「Web サーバー上で SSL を設定する方法」を参照してください。

■ IIS を使用して、SSL 用の Web サービス仮想ディレクトリを構成するには

  1. Web サービスをホストしているコンピュータで IIS を起動します。

  2. SecureMath 仮想ディレクトリに移動します。

  3. [SecureMath] を右クリックし、[プロパティ] をクリックします。

  4. [ディレクトリのセキュリティ] タブをクリックします。

  5. [セキュリティ保護された通信] の [編集] をクリックします。

    [編集] ボタンをクリックできない場合は、Web サーバー証明書がインストールされていない可能性があります。

  6. [保護されたチャンネル (SSL) を要求する] チェック ボックスをオンにします。

  7. [OK] をクリックし、もう一度 [OK] をクリックします。

  8. [継承/優先] ダイアログ ボックスで [すべて選択] をクリックします。次に、[OK] をクリックして [SecureMath のプロパティ] ダイアログ ボックスを閉じます。

    これにより、仮想ディレクトリのルート内にあるすべてのサブディレクトリに対して、新しいセキュリティ設定が適用されます。

3. ブラウザを使用して Web サービスをテストする

ここでは、Web サーバー証明書が有効かどうか、およびクライアント コンピュータに信頼された証明機関 (CA) が発行したものかどうかを確認します。

■ SSL を使用して Internet Explorer から Web サービスを呼び出すには

  1. クライアント コンピュータで Internet Explorer を起動し、HTTPS を使用して Web サービスを参照します。次に、例を示します。

    https://WebServer/securemath/math.asmx

    Web サービスのテスト ページがブラウザに表示されます。

  2. Web サービスのテスト ページが正しく表示されたら Internet Explorer を閉じて、「5. Web アプリケーションを開発して、Web サービスを呼び出す」に進んでください。

  3. 図 1 のような [セキュリティの警告] ダイアログ ボックスが表示された場合は、[証明書の表示] をクリックして Web サーバー証明書を発行した CA の身元情報を表示します。クライアント コンピュータに、この CA の証明書をインストールする必要があります。この手順については、「4. 証明機関の証明書をクライアント コンピュータにインストールする」で説明します。

  4. Internet Explorer を閉じます。

    図 1 [セキュリティの警告] ダイアログ ボックス

4. 証明機関の証明書をクライアント コンピュータにインストールする

ここでは、証明書発行機関である CA の証明書を、信頼できるルート証明機関としてクライアント コンピュータにインストールします。クライアント コンピュータがサーバー証明書を認定するためには、証明書を発行する CA を信頼しなければなりません。CA が信頼されていれば、[セキュリティの警告] ダイアログ ボックスは表示されません。

■ Microsoft 証明書サービスを Windows ドメイン内で CA として使用する場合

Web サーバー証明書が Microsoft 証明書サービス証明機関によって発行された場合にのみ、以下の手順を実行します。それ以外の場合は、CA の .cer ファイルが既にあるので手順 8. に進んでください。

  1. Internet Explorer を起動し、http://hostname/certsrv を参照します。"hostname" の部分は、サーバー証明書を発行する Microsoft 証明書サービスを実行するコンピュータの名前になります。

  2. [CA 証明書または証明書失効リストの取得] をクリックし、[次へ] をクリックします。

  3. [この CA 証明書のパスをインストールしてください] をクリックします。

  4. [ルート証明書ストア] ダイアログ ボックスで [はい] をクリックします。

  5. HTTPS を使用して Web サービスを参照します。次に、例を示します。

    https://WebServer/securemath/math.asmx

    今度は [セキュリティの警告] ダイアログ ボックスは表示されず、Web サービスのテスト ページが正しくブラウザに表示されます。

    CA の証明書は、個人用の信頼されたルート証明書ストアにインストールされています。ASP.NET ページから Web サービスを正常に呼び出せるようにするには、その CA の証明書を自分のコンピュータの信頼されたルート ストアに追加する必要があります。

  6. もう一度、手順 1. と 2. を実行し、[CA 証明書のダウンロード] をクリックして、自分のローカル コンピュータのファイルにその証明書を保存します。

  7. CA の証明書ファイル (.cer) が格納されたので、残りの手順を実行します。

  8. タスク バーの [スタート] をクリックし、[ファイル名を指定して実行] をクリックします。

  9. 「mmc」と入力し、[OK] をクリックします。

  10. [コンソール] メニューの [スナップインの追加と削除] をクリックします。

  11. [追加] をクリックします。

  12. [証明書] をクリックし、次に [追加] をクリックします。

  13. [コンピュータ アカウント] をクリックし、[次へ] をクリックします。

  14. [ローカル コンピュータ (このコンソールを実行しているコンピュータ)] をクリックし、[完了] をクリックします。

  15. [閉じる] をクリックし、[OK] をクリックします。

  16. MMC スナップインの左側のペインで、[証明書 (ローカル コンピュータ)] を展開します。

  17. [信頼されたルート証明機関] を展開します。

  18. [証明書] を右クリックし、[すべてのタスク] をクリックし、[インポート] をクリックします。

  19. [証明書のインポート ウィザード] ダイアログ ボックスで [次へ] をクリックします。

  20. CA が発行した .cer ファイルへのパスとファイル名を入力します。

  21. [次へ] をクリックします。

  22. [証明書をすべて次のストアに配置する] をクリックし、[参照] をクリックします。

  23. [物理ストアを表示する] チェック ボックスをオンにします。

  24. 一覧の [信頼されたルート証明書] を展開し、[ローカル コンピュータ] をクリックします。

  25. [OK] をクリックし、[次へ] をクリックし、[完了] をクリックします。

  26. [OK] をクリックして、確認のメッセージ ボックスを閉じます。

  27. MMC スナップインで [証明書] フォルダを最新の情報に更新し、CA の証明書が一覧にあることを確認します。

  28. MMC スナップインを閉じます。

5. Web アプリケーションを開発して、Web サービスを呼び出す

ここではシンプルな ASP.NET Web アプリケーションを作成します。この ASP.NET Web アプリケーションはクライアント アプリケーションとして使用し、Web サービスを呼び出します。

■ シンプルな ASP.NET Web アプリケーションを作成するには

  1. Web サービス クライアント コンピュータ上で、"SecureMathClient" という名前の新しい C# ASP.NET Web アプリケーションを作成します。

  2. Web サービスへの Web 参照 (HTTPS を使用) を追加します。

    1. ソリューション エクスプローラで [参照設定] を右クリックし、[Web 参照の追加] をクリックします。

    2. [Web 参照の追加] ダイアログ ボックスで、Web サービスの URL を入力します。必ず HTTPS の URL を使用するようにしてください。

      メモ HTTPS を使用しない Web サービスへの Web 参照が既に設定されている場合は、生成済みのプロキシ クラス ファイルを手動で編集し、Url プロパティを設定するコード行を HTTP URL から HTTPS URL に変更します。

    3. [参照の追加] をクリックします。

  3. WebForm1.aspx.cs を開き、次の using ステートメントを既存の using ステートメントの下に追加します。

using SecureMathClient.WebReference1;
  1. デザイナ モードで WebForm1.aspx を表示し、図 2 で示すように、次の ID を使用したフォームを作成します。

    • オペランド 1

    • オペランド 2

    • 結果

    • 追加

      図 2 WebForm1.aspx フォーム

  2. [追加] ボタンをダブルクリックして、ボタン クリック イベント ハンドラを作成します。

  3. そのイベント ハンドラに次のコードを追加します。

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();
}

  1. [ビルド] メニューの [ソリューションのビルド] をクリックします。

  2. アプリケーションを実行します。加算する 2 つの数字を入力し、[追加] ボタンをクリックします。

    Web アプリケーションが SSL を使用して Web サービスを呼び出します。

関連資料

patterns and practices home