作業の手引き
SSL を使用して Web サービスを呼び出す方法
公開日: 2004年9月7日 | 最終更新日: 2004年9月7日
トピック
目的
このモジュールの目的は次のとおりです。
| • | すべてのクライアント通信に対して SSL の使用を要求するように ASP.NET Web サービスを構成する。 |
| • | Web サーバーに対する SSL 証明書を発行した CA (証明機関) を信頼するようにクライアント コンピュータを構成する。 |
| • | HTTPS を使用して安全に ASP.NET Web サービスを呼び出す。 |
適用対象
このモジュールは、次の製品およびテクノロジを対象としています。
| • | Microsoft® Windows® XP または Windows 2000 Server (Service Pack 3) 以降のオペレーティング システム |
| • | Microsoft Internet Information Services (IIS) 5.0 以降 |
| • | Microsoft .NET Framework Version 1.0 (Service Pack 2) 以降 |
| • | Microsoft Visual C#® .NET |
モジュールの使用方法
このモジュールをよく理解するには、次の前提が必要です。
| • | Visual C# .NET および Microsoft Visual Studio® .NET を使用した経験があること。 |
| • | ASP.NET を使用して Web アプリケーションを開発した経験があること。 |
| • | IIS を構成した経験があること。 |
| • | 「モジュール 4 セキュリティ保護された通信」を読んでいること。このモジュールでは、SSL を紹介し、SSL が一般的に使用される状況について説明しています。 |
| • | SSL 証明書がインストールされた Web サーバーを用意していること。詳細については、「Web サーバー上で SSL を設定する方法」を参照してください。 |
| • | クライアント コンピュータが、サーバーの SSL 証明書を発行した CA を信頼済みであること、または CA の証明書にアクセスし、このモジュールで説明する手順に従ってそれを信頼できるようにしてあること。 |
要約
Web サービスとクライアント アプリケーションの間の通信では、頻繁に機密情報がやり取りされます。このような状況では、SSL (Secure Sockets Layer) プロトコルによるデータ整合性と機密性が重要な役割を果たします。
このモジュールでは、クライアントのすべての通信に対して SSL の使用を要求するように ASP.NET Web サービスを構成する方法と、ASP.NET クライアント アプリケーションから HTTPS プロトコルを使用して Web サービスを呼び出す方法について説明します。
メモ: ここで取り上げる情報は、ASP.NET および Microsoft Internet Information Services (IIS) が (.NET Remoting テクノロジを使用して) ホストするリモート オブジェクトにも適用されます。IIS がホストするリモート コンポーネントを作成する方法の詳細については、「Windows サービスでリモート オブジェクトをホストする方法」を参照してください。
シンプルな Web サービスを作成する
ここでは、テスト用のシンプルな Web サービスを作成します。
| • | Web サービス ホスト コンピュータにシンプルな Web サービスを作成するには 1. | Visual Studio .NET を起動して、"SecureMath" という名前の新しい Visual 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);
}
| 5. | Web サービスを作成するには、[ビルド] メニューの [ソリューションのビルド] をクリックします。 |
|
SSL を必要とする Web サービス仮想ディレクトリを構成する
Web サービスはインターネット インフォメーション サービス (IIS) 上で実行され、この IIS を利用して SSL がサポートされています。
ここでは有効なサーバー証明書が Web サーバーにインストールされていることを想定しています。Web サーバー証明書のインストールの詳細については、「Web サーバー上で SSL を設定する方法」を参照してください。
| • | IIS を使用して、SSL 用の Web サービス仮想ディレクトリを構成するには 1. | Web サービス ホスト コンピュータ上で、IIS を起動します。 | 2. | SecureMath 仮想ディレクトリに移動します。 | 3. | [SecureMath] を右クリックし、[プロパティ] をクリックします。 | 4. | [ディレクトリ セキュリティ] タブをクリックします。 | 5. | [セキュリティ保護された通信] で [編集] をクリックします。
[編集] が表示されない場合は、Web サーバー証明書がインストールされていない可能性があります。 | 6. | [保護されたチャンネル (SSL) を要求する] チェック ボックスをオンにします。 | 7. | [OK] を 2 回クリックします。 | 8. | [継承/優先] ダイアログ ボックスで [すべて選択] をクリックします。次に、[OK] をクリックして [SecureMath のプロパティ] ダイアログ ボックスを閉じます。
これにより、仮想ディレクトリのルート内に存在するすべてのサブディレクトリに新しいセキュリティ設定が適用されます。 |
|
ブラウザを使用して Web サービスをテストする
ここでは、Web サーバー証明書が有効かどうか、およびクライアント コンピュータに信頼された証明機関 (CA) が発行したものかどうかを確認します。
| • | SSL を使用して Internet Explorer から Web サービスを呼び出すには 1. | クライアント コンピュータで Internet Explorer を起動し、HTTPS を使用して Web サービスを参照します。次に例を示します。 https://WebServer/securemath/math.asmx
Web サービスのテスト ページがブラウザに表示されます。 | 2. | Web サービスのテスト ページが正しく表示されたら Internet Explorer を閉じて、「Web アプリケーションを作成してサービス コンポーネントを呼び出す」に進んでください。 | 3. | 図 1 のような [セキュリティの警告] ダイアログ ボックスが表示された場合は、[証明書の表示] をクリックして Web サーバー証明書を発行した CA の身元情報を表示します。クライアント コンピュータに、この CA の証明書をインストールする必要があります。この手順については、「証明機関の証明書をクライアント コンピュータにインストールする」で説明します。 | 4. | Internet Explorer を閉じます。 |
|
![[セキュリティの警告] ダイアログ ボックス](http://img.microsoft.com/japan/msdn/security/guidance/images/secmod28_01.jpg)
図 1
[セキュリティの警告] ダイアログ ボックス
証明機関の証明書をクライアント コンピュータにインストールする
ここでは、証明書発行機関である CA の証明書を、信頼できるルート証明機関としてクライアント コンピュータにインストールします。クライアント コンピュータがサーバー証明書を受け取るためには、証明書を発行する CA を信頼しなければなりません。CA が信頼されていれば、[セキュリティの警告] ダイアログ ボックスは表示されません。
| • | Microsoft 証明書サービスを Windows ドメイン内で CA として使用する場合 1. | Web サーバー証明書が Microsoft 証明書サービス証明機関によって発行された場合にのみ、以下の手順を実行します。そうでない場合で、CA の .cer ファイルが既にある場合は、手順 8. に進んでください。 | 2. | Internet Explorer を起動し、http://hostname/certsrv を参照します。"hostname" の部分は、サーバー証明書を発行する Microsoft 証明書サービスを実行するコンピュータの名前です。 | 3. | [CA 証明書または証明書失効リストの取得] をクリックし、[次へ] をクリックします。 | 4. | [この CA 証明書のパスをインストールしてください] をクリックします。 | 5. | [ルート証明書ストア] ダイアログ ボックスで [はい] をクリックします。 | 6. | HTTPS を使用して Web サービスを参照します。次に例を示します。 https://WebServer/securemath/math.asmx
今度は [セキュリティの警告] ダイアログ ボックスは表示されず、Web サービスのテスト ページが正しくブラウザに表示されます。 CA の証明書は、個人用の信頼されたルート証明書ストアにインストールされています。ASP.NET ページから Web サービスを正常に呼び出せるようにするには、その CA の証明書を自分のコンピュータの信頼されたルート ストアに追加する必要があります。 | 7. | 手順 1. と 2. を再度実行し、[CA 証明書のダウンロード] をクリックして、自分のローカル コンピュータのファイルにその証明書を保存します。 | 8. | 上記の手順が完了したら、残りの手順を実行します。 CA の .cer 証明書ファイルがある場合 | 9. | タスク バーの [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。 | 10. | 「mmc」と入力し、[OK] をクリックします。 | 11. | [コンソール] メニューの [スナップインの追加と削除] をクリックします。 | 12. | [追加] をクリックします。 | 13. | [証明書] を選択し、[追加] をクリックします。 | 14. | [コンピュータ アカウント] を選択し、[次へ] をクリックします。 | 15. | [ローカル コンピュータ (このコンソールを実行しているコンピュータ)] を選択し、[完了] をクリックします。 | 16. | [閉じる] をクリックし、[OK] をクリックします。 | 17. | MMC スナップインの左側のペインで、[証明書 (ローカル コンピュータ)] を展開します。 | 18. | [信頼されたルート証明機関] を展開します。 | 19. | [証明書] を右クリックし、[すべてのタスク] をポイントし、[インポート] をクリックします。 | 20. | [証明書のインポート ウィザード] ダイアログ ボックスで [次へ] をクリックします。 | 21. | CA が発行した .cer ファイルへのパスとファイル名を入力します。 | 22. | [次へ] をクリックします。 | 23. | [証明書をすべて次のストアに配置する] をクリックし、[参照] をクリックします。 | 24. | [物理ストアを表示する] チェック ボックスをオンにします。 | 25. | 一覧の [信頼されたルート証明書] を展開し、[ローカル コンピュータ] をクリックします。 | 26. | [OK] をクリックし、[次へ] をクリックし、[完了] をクリックします。 | 27. | [OK] をクリックして、確認のメッセージ ボックスを閉じます。 | 28. | MMC スナップインで [証明書] フォルダを最新の情報に更新し、CA の証明書が一覧にあることを確認します。 | 29. | MMC スナップインを閉じます。 |
|
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; | 4. | デザイナ モードで WebForm1.aspx を表示し、次の ID を使用して、図 2 のようなフォームを作成します。  図 2
WebForm1.aspx フォーム
| 5. | [追加] ボタンをダブルクリックして、ボタン クリック イベント ハンドラを作成します。 | 6. | イベント ハンドラに次のコードを追加します。 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();
}
| 7. | [ビルド] メニューの [ソリューションのビルド] をクリックします。 | 8. | アプリケーションを実行します。加算する 2 つの数字を入力し、[追加] ボタンをクリックします。 Web アプリケーションが SSL を使用して Web サービスを呼び出します。 |
|
関連資料
| • | Windows サービスでリモート オブジェクトをホストする方法 |
| • | Web サーバー上で SSL を設定する方法 |
| • | ASP.NET からのクライアント証明書を使用して Web サービスを呼び出す方法 |