SSL の設定

このトピックでは、IIS(Internet Information Services)Web サーバに HTTPS(Hypertext Transfer Protocol Secure)経由で Web ページや他のリソースを提供させる方法について説明します。HTTPS は、クライアントとサーバ間のインターネット通信をセキュリティで保護するための一般的な方法です。HTTPS では、通信を暗号化することにより、通信が傍受された場合に第三者が情報を参照して使用するのを阻止します。サーバに送信される機密情報はすべて、HTTPS を通じて保護する必要があります。エンド ユーザ以外の何者かに見られては困るデータを送信するページと同様に、ログイン情報にも HTTPS を使用する必要があります。

ページや他のリソースを HTTPS 経由で提供するには、SSL(Secure Sockets Layer)証明書を取得して、IIS サーバにインストールしなければなりません。通常、SSL 証明書は、ブラウザや他のインターネット対応クライアント ソフトウェアによって認識される認証機関(CA)から取得します。ブラウザが認識する CA から証明書が発行されている場合、サーバと通信するためにユーザが特別な操作を行う必要はありません。このため、プロダクション サーバに対して CA が発行する証明書を取得することを推奨します。詳細については、「認証機関からの SSL 証明書の取得とインストール」をご参照ください。

SSL 証明書をインストールした後は、HTTPS を使用して、Web ページやサーバ上にある他のリソースにアクセスできます。リソースに機密情報が含まれている場合は、クライアントに HTTPS を使用させることを推奨します。詳細については、「HTTPS の使用の要求」をご参照ください。

開発とテストの目的には、自己署名 SSL 証明書を使用すれば十分かもしれません。ブラウザや他のクライアントはこうした証明書を自動的に受け入れず、証明書を要求する警告メッセージを表示します。詳細については、「自己署名 SSL 証明書の使用」をご参照ください。

メモメモ:

このトピックで説明しているのは、IIS 6(Windows Server 2003)用の手順と IIS 7(Windows Vista、Windows 7、および Windows Server 2008)用の手順です。IIS 5.1(Windows XP)を使用している場合は、IIS 6 の手順に従ってください。

SSL 証明書がインストールされているかどうかの判定

SSL 証明書が IIS Web サーバにインストールされているかどうかわからない場合は、次の手順に従います。

IIS 6 の場合の手順

手順:
  1. [コントロール パネル][管理ツール][インターネット インフォメーション サービス(IIS)マネージャ] を開きます。
  2. IIS Manager の左のパネルでツリーを展開し、[Web サイト][既定の Web サイト] を選択します(追加の Web サイトが作成されている場合は、ArcGIS Server インスタンスの Web サイトがインストールされている場所で、これらの手順を実行してください)。
  3. [既定の Web サイト] を右クリックし、ショートカット メニューから [プロパティ] を選択します。
  4. Web サイトの [プロパティ] ダイアログ ボックスで [ディレクトリ セキュリティ] タブをクリックします。[セキュリティ保護された通信] セクションで [証明書の表示] ボタンが有効になっている場合は、SSL 証明書がインストールされています。[証明書のリクエスト] ボタンが有効になっている場合、SSL 証明書はインストールされていません。

IIS 7 の場合の手順

手順:
  1. [コントロール パネル][管理ツール][インターネット インフォメーション サービス(IIS)マネージャ] を開きます。
  2. [接続] パネルで自分のコンピュータを選択します。
  3. IIS の [機能ビュー] タブが選択されていることを確認して、[サーバー証明書] をクリックします。インストールされた証明書が表示されます。

認証機関からの SSL 証明書の取得とインストール

このセクションでは、認証機関から SSL 証明書を取得し、インストールする手順について説明します。詳細については、システム管理者または外部のコンサルタントに問い合わせるか、セキュリティに関する他のリソースをご参照ください。詳細については、「Using SSL to Encrypt Confidential Data」をご参照ください。

手順:
  1. IIS Manager を使用して、証明書のリクエストを作成します。手順については、「Request a server certificate (IIS 6.0)」または「Request an Internet Server Certificate (IIS 7)」をご参照ください。
  2. 認定されている CA にリクエストを送信します。Microsoft のソフトウェアに対応する CA のリストについては、「Microsoft Root Certificate Program Members」をご参照ください。
  3. 証明書を取得したら、IIS サーバに証明書をインストールします。手順については、「Install a server certificate (IIS 6.0)」または「Install an Internet Server Certificate (IIS 7)」をご参照ください。
  4. IIS 7 の場合は、HTTPS バインディングをサイトに追加します。手順については、「Add a Binding to a Site (IIS 7)」をご参照ください。

証明書をインストールした後、クライアントは HTTPS プロトコルを使ってページや他のリソースにアクセスできるようになります。リソースにアクセスする際に、HTTPS の使用を要求することもできます。後から SSL 証明書を削除する必要がある場合は、「HTTPCfg (IIS 6.0)」などのツールについての IIS のドキュメント、または「Remove a Server Certificate (IIS 7)」をご参照ください。

Web サーバの SSL ポート

Web サーバに対する SSL リクエストは、サーバの特定のポートに送られます。ポート(または TCP ポート)は転送先コンピュータにリクエストを処理するプログラムを指示します。デフォルトで、Web サーバは SSL リクエストをポート 443 で処理します。デフォルト ポートを使用する場合、クライアントはリクエストでポートを指定する必要はありません。Web サーバにデフォルト ポート以外が設定されている場合は、URL で、たとえば https://gis.example.com:8443/mywebapp のようにポートを指定する必要があります。

IIS Web サイトでデフォルト以外の SSL ポートを使用することはできますが、ArcGIS Server(具体的には、ArcGIS Server Web アプリケーションまたは ArcGIS インスタンス)をインストールする前に設定しておきます。ArcGIS Server インスタンスをインストールしてから、SSL をデフォルト以外のポートに設定した場合は、ArcGIS Server で SSL ポートの値を更新する必要があります。同様に、ArcGIS Server のセキュリティを設定したあとで SSL ポートを変更した場合も、新しいポート番号で ArcGIS Server を更新する必要があります。

ArcGIS Server で SSL ポートを更新する必要があるのは、GIS Web サービスのセキュリティを有効にしているか有効にする予定があり、セキュリティでトークンを使用する場合だけです。SQL Server またはカスタム プロバイダにユーザを格納する場合に、サービスのセキュリティでトークンが使用できます。

新しい SSL ポート番号またはデフォルトでない SSL ポート番号に ArcGIS Server インスタンスを更新するには、以下の手順を実行します。

手順:
  1. テキスト エディタまたは XML エディタを使用して、<ArcGIS インスタンス>\Security\web.config ファイルを開きます。<ArcGIS インスタンス> は、通常 C:\Inetpub\wwwroot\ArcGIS フォルダですが、IIS Web サイト用に別の場所を使っている場合、または、ArcGIS Web アプリケーションを別の名前でインストールした場合は、そのフォルダの Security フォルダを使用します。
  2. web.config ファイルで、<add key="SSLPort" value="443" /> という設定を探し(SSL ポートの値は例です)、値を新しい SSL ポート番号に変更します。編集したファイルを保存して閉じます。
  3. まだセキュリティを設定していない場合は、残りの手順をスキップできます。そうでない場合は、ArcGIS Server Manager を開き、ログインして、[セキュリティ][設定][構成] の順にクリックします。
  4. 表示されるウィザードの指示に従って、適切なユーザとロールの場所にセキュリティを設定します。以前にセキュリティを設定している場合でも、この作業を繰り返して、新しい SSL ポートを選択する必要があります。
  5. セキュリティ ウィザードの操作を完了したら、セキュリティで保護されたサービスにアクセスできるかテストして、設定が適切に適用されたか確認します。

HTTPS の使用の要求

クライアントが機密データが含まれた Web ページやリソースにアクセスする場合は、HTTPS を使用させる必要があります。これにはログイン ページが含まれますが、Web アプリケーション全体も含まれる場合があります。

HTTPS を使用すると、クライアントとサーバ間の通信のオーバーヘッドが増加します。第三者に開示したくないリソースに限り、HTTPS を使用または要求してください。

ArcGIS Server サービスまたはフォルダで HTTPS を必須にする場合は、ArcGIS Server を使用して HTTPS を必須にできます。詳細については、「サービスへのインターネット接続のセキュリティ」というトピックの「フォルダおよびサービスに対する HTTPS の要求」をご参照ください。

また、IIS Web サーバを使用して、Web アプリケーションや Web ページなどのリソースで HTTPS(SSL)を必須にすることもできます。

IIS 6 の場合の手順

手順:
  1. [コントロール パネル][管理ツール][インターネット インフォメーション サービス(IIS)マネージャ] を開いて、IIS Manager を起動します。
  2. [Web サイト] ノードを展開し、HTTPS に制限するリソースが含まれた Web サイトを展開します。デフォルトでは、IIS は [既定の Web サイト] に含まれているサイトに対して処理を実行します。Web サイトでツリーを展開し、HTTPS に制限したい Web アプリケーション、フォルダ、Web ページ、またはその他のリソースを探します。
  3. リソースを右クリックして、[プロパティ] を選択します。
  4. [ディレクトリ セキュリティ] タブまたは [ファイル セキュリティ] タブをクリックします。[セキュリティ保護された通信] セクションで [編集] ボタンをクリックします。このボタンが利用できない場合、IIS サーバに SSL 証明書はインストールされていません。証明書の取得とインストールについては、「認証機関からの SSL 証明書の取得とインストール」をご参照ください。
  5. [セキュリティで保護された通信] ダイアログ ボックスで、[セキュリティで保護されたチャネル (SSL) を要求する] チェックボックスをオンにします。
  6. [OK] をクリックしてこのダイアログ ボックスを閉じ、リソースの [プロパティ] ダイアログ ボックスを閉じます。IIS Manager を閉じます。
  7. テストとして、「http://」を使ってリソースを取得してみます。HTTPS が必要であるというメッセージが表示されます。「https://」を使ってリソースを取得してみます。

IIS 7 の場合の手順

手順:
  1. [コントロール パネル][管理ツール][インターネット インフォメーション サービス(IIS)マネージャ] を開いて、IIS Manager を起動します。
  2. [Web サイト] ノードを展開し、HTTPS に制限するリソースが含まれた Web サイトを展開します。デフォルトでは、IIS は [既定の Web サイト] に含まれているサイトに対して処理を実行します。Web サイトでツリーを展開し、HTTPS に制限したい Web アプリケーション、フォルダ、Web ページ、またはその他のリソースを探します。
  3. サーバのツリー表示で、SSL を必須にするアイテムを選択します。
  4. IIS の機能ビューが有効になっていることを確認して、[SSL 設定] をダブルクリックします。
  5. [SSL が必要] をオンにして、操作ウィンドウで [適用] をクリックします。
  6. IIS Manager で [戻る] をクリックして、機能ビューに戻ります。
  7. 操作ウィンドウで [*:80 (http) 参照] をクリックして、テストします。SSL が必要であるというメッセージが表示されます。次に、[操作] ペインで [*:443 (https) 参照] をクリックして、HTTPS を使用してページを取得します。

HTTPS を要求するページまたはリソースを HTTP を通じてリクエストした場合、クライアントはリソースの HTTPS URL に自動的にリダイレクトされません。このようなリクエストをプログラムからリダイレクトすることは可能ですが(インターネット上でさまざまな開発リソースを検索してください)、そのための標準ツールはありません。「https://」を使ってリソースにアクセスする必要があることをユーザに理解してもらう必要があります。

自己署名 SSL 証明書の使用

開発とテストには、自己署名 SSL 証明書で十分かもしれません。実際に稼動しているサイトで自己署名証明書を使用することは推奨しません。ブラウザ ユーザが自己署名証明書を使用するサイトからリソースをロードすると、セキュリティ警告が表示されます。接続先のサーバと組織の身元がわかっている場合を除き、自己署名証明書を信用すべきではありません。ブラウザの問題だけでなく、サーバ アプリケーションによっては自己署名証明書にうまく対応できないことがあります。以下の手順には、一部のサーバ アプリケーションに対するヒントが含まれていますが、他の種類のアプリケーションについては、サーバの証明書をサーバとアプリケーションが認識するような形でインストールする必要があるかもしれません。

自己署名証明書を生成する方法はさまざまです。選択肢については、セキュリティ関連の資料、セキュリティの専門家、または Web サイトをご参照ください。

IIS 7 では、IIS Manager を使用して自己署名証明書を作成できます。手順については、「Create a Self-Signed Server Certificate in IIS 7」をご参照ください。自己署名サーバ証明書を作成すると、HTTPS バインディングをサイトに追加する必要があります。手順については、「Add a Binding to a Site (IIS 7)」をご参照ください。

IIS 6 では、IIS 6.0 Resource Kit の SelfSSL を使用して自己署名証明書を作成する必要があります。次に、そのための手順を示します。

手順:
  1. Microsoft から IIS 6.0 Resource Kit をダウンロードし、インストールします。少なくとも SelfSSL ツールをインストールします。他のツールはオプションです。
    メモメモ:

    このツールは Windows Server 2003 と Windows XP でサポートされます。他のプラットフォームでは別のツールが必要になる場合があります。

  2. 次の手順に従って SelfSSL を実行し、証明書を IIS コンピュータにインストールします。
    1. IIS コンピュータで、[スタート][プログラム][IIS Resources][SelfSSL][SelfSSL] の順にクリックします。これにより、SelfSSL ディレクトリを現在のディレクトリとして、コマンド プロンプト ウィンドウが開きます。
    2. 証明書を作成してインストールするコマンドを入力します。この例では、www.example.com サーバに対し、ローカル ブラウザによって信頼される 365 日間有効な証明書を作成します。SelfSSL /V:365 /N:CN=www.example.com /T
    3. 名前(N)引数は、ユーザがサーバに対して入力する名前に設定する必要があります。デフォルト以外の IIS Web サイトへのインストールなど、オプションの詳細については、SelfSSL のヘルプをご参照ください。
    4. exit」と入力し、Enter キーを押して SelfSSL ウィンドウを閉じます。
  3. ブラウザを開き、「https://」を使ってサーバのページをロードし、証明書をテストします。証明書が既知の認証機関からのものではないというメッセージが表示されます。[このサイトの閲覧を続行する] をクリックすると、ページが通常どおりに読み込まれます。
  4. 別のサーバ上で実行されている Web ADF アプリケーションで、セキュリティで保護された ArcGIS サービスを使用する場合は、ローカル コンピュータの証明書ストアに証明書をインポートします。以下の手順をご参照ください。

証明書は、前述の N 引数で指定された名前(N が指定されない場合はコンピュータ名)でリクエストされた場合にのみ認識されます。たとえば、デフォルトのコンピュータ名「myserver」が使用され、クライアントが完全修飾ドメイン名「myserver.example.com」でページをリクエストすると、証明書の名前とリクエストが一致しないことを示す警告がクライアントに表示されます。

クライアント コンピュータでの自己署名証明書のインストール

自己署名証明書を使用すると、クライアントはサーバとのセッションごとに、最初に警告を表示するようになります。自己署名証明書がインストールされたサーバで、セキュリティで保護されたサービスを使用する Web ADF アプリケーションを作成すると、アプリケーション内のサービスが実行されないことがあります。このようなセキュリティの警告や問題を避けるには、サーバから証明書をエクスポートして、クライアント コンピュータにインポートします。これは社内テストや開発目的でのみ行うべきであり、実際に稼動しているサイトでは実行しないでください。

IIS 6 での証明書のエクスポート

手順:
  1. IIS マネージャを開いて、[既定の Web サイト] に移動します。
  2. [既定の Web サイト] を右クリックし、[プロパティ] を選択します。
  3. [ディレクトリ セキュリティ] タブの [セキュリティ保護された通信][証明書の表示] をクリックします。
  4. [証明書] ウィンドウで [詳細] タブをクリックし、[ファイルにコピー] をクリックします。
  5. 証明書のエクスポート ウィザードで、すべての設定をデフォルトのままにし(秘密キーをエクスポートせず、DER 形式を使用します)、ファイルの名前を指定して(mymachine-ssl-cert-export.cer など)、[完了] をクリックします。証明書ファイルはデフォルトで \Windows\System32\inetsrv\ に格納されますが、別の場所に保存することもできます。
  6. 電子メールやファイル共有を通じて、または Web サーバで、クライアント コンピュータと証明書を共有します。

IIS 7 での証明書のエクスポート

手順:
  1. IIS マネージャを開いて、コンピュータを選択します。
  2. IIS の機能ビューで、[サーバー証明書] をダブルクリックします。
  3. エクスポートする証明書をクリックします。
  4. 操作ウィンドウで [表示] をクリックします。
  5. [証明書] ウィンドウで [詳細] タブをクリックし、[ファイルにコピー] をクリックします。
  6. 証明書のエクスポート ウィザードで、すべての設定をデフォルトのままにし(秘密キーをエクスポートせず、DER 形式を使用します)、ファイルの名前を指定して(mymachine-ssl-cert-export.cer など)、[完了] をクリックします。証明書ファイルはデフォルトで \Windows\System32\inetsrv\ に格納されますが、別の場所に保存することもできます。
  7. 電子メールやファイル共有を通じて、または Web サーバで、クライアント コンピュータと証明書を共有します。

証明書の用意ができたら、引き続き、以下の適切な手順に従って、クライアント コンピュータに証明書をインポートします。

IIS 6 での証明書のインポート

手順:
  1. 先ほど作成した証明書ファイルのコピーを取得し、ローカルに保存します。
  2. *.cer ファイルをダブルクリックして証明書情報を表示します。
  3. [証明書のインストール] をクリックします。
  4. 証明書のインポート ウィザードが起動されるので、[次へ] をクリックします。
  5. ウィザードの [証明書ストア] ページで、証明書をインストールする場所を選択します。
    • コンピュータがクライアント アプリケーション(ArcGIS Desktop またはブラウザ)のみを実行する場合は、[証明書の種類に基づいて、自動的に証明書ストアを選択する] を選択します。
    • コンピュータが .NET Web ADF アプリケーションをホストする Web サーバである場合は、[証明書をすべて次のストアに配置する] を選択します。次に、[参照] ボタンをクリックし、[証明書ストアの選択] ダイアログ ボックスで [物理ストアを表示する] オプションをチェックします。[信頼されたルート証明機関] を展開し、[ローカル コンピュータ] フォルダを選択します。[OK] をクリックして 証明書のインポート ウィザードに戻ります
      メモメモ:

      コンピュータが前述のクライアント アプリケーションを実行する場合、手順 6 の後にインポート ウィザードを再実行し、[自動的に証明書ストアを選択する] オプションを使って証明書をインストールします。

  6. [次へ] をクリックして [完了] をクリックします。証明書が正しくインポートされたことを示すメッセージが表示されます。[証明書] ダイアログ ボックスを閉じます。

IIS 7 での証明書のインポート

手順:
  1. [スタート] メニューの [ファイル名を指定して実行] をクリックし、「mmc.exe」と入力して [OK] をクリックします。
  2. MMC(Microsoft 管理コンソール)で、[ファイル] > [スナップインの追加と削除] の順にクリックします。
  3. [証明書] をクリックし、[追加] をクリックします。
  4. [ユーザ アカウント] をクリックし、[完了] をクリックします。
  5. [スナップインの追加と削除] ダイアログ ボックスで [OK] をクリックします。[証明書] スナップインが MMC ウィンドウに追加されます。
  6. [証明書 - 現在のユーザー] > [信頼されたルート証明機関] の順に展開して、[証明書] サブノードを表示します。
  7. [証明書] ノードを右クリックして、[すべてのタスク] をクリックし、[インポート] を選択します。
  8. 証明書のインポート ウィザード[次へ] をクリックし、[インポートする証明書ファイル] ページで [参照] をクリックして、ローカルに保存した証明書ファイルを [開く] ダイアログ ボックスで選択して、[開く] をクリックします。[インポートする証明書ファイル] ページにパス名が表示されます。
  9. [次へ] をクリックします。[証明書ストア] ページで、[証明書をすべて次のストアに配置する] オプションが選択されていることと、表示されている証明書ストアが [信頼されたルート証明機関] であることを確認します。[次へ] をクリックします。
  10. 証明書のインポートの概要情報を確認し、[完了] をクリックします。
  11. [セキュリティ警告] 画面で [はい] をクリックして、[OK] をクリックします。
  12. コンピュータが .NET Web ADF アプリケーションをホストする Web サーバである場合は、手順 2 ~ 11 を繰り返しますが、手順 4 で [ユーザ アカウント] の代わりに [コンピュータ アカウント] を選択します。

これらの手順を実行すると、Internet Explorer と他の IE ベースのクライアントがサーバとの間で HTTPS を使用できるようになり、警告は表示されなくなります。Internet Explorer 以外のブラウザの場合は、証明書を別に承認しなくてはいけないことがあります。

ArcGIS Server Java Web ADF アプリケーションから GIS Web サービスにアクセスする場合は、keytool を使用して Java Manager の JRE(Java Runtime Environment)に証明書をインストールする必要があります。別の Web サーバにアプリケーションを再配置する場合は、Web サーバの JRE に証明書を追加する必要があります。

Services Directory のログイン ページと管理ページにおける SSL 使用の要求

Services Directory では、デフォルトで匿名アクセスが有効になっています。Services Directory にログインすると認証情報がサーバに渡されるため、サーバに SSL を設定したら、ログイン ページと管理ページでは HTTPS を必須にする必要があります。これらのページで SSL を必須にするには、次の手順に従います。

手順:
  1. テキスト エディタで <ArcGIS Server インスタンス>\rest\rest.config ファイルを開きます。たとえば、インスタンス名が ArcGIS で、IIS が標準ディレクトリにインストールされている場合、このパスは c:\Inetpub\wwwroot\ArcGIS\rest\rest.config になります。
  2. ファイル末尾にある UseSslForLoginAndAdmin 要素を見つけます。
  3. 要素の内容を true に変更します。
  4. 編集したファイルを保存して閉じます。

これで、ユーザがログイン リンクをクリックするか、管理者が REST 管理ページに移動すると、HTTPS URL にリダイレクトされて、認証情報が保護されます。


3/6/2012