証明書を取得すると、サーバーのセキュリティー保護を開始できます。Sun Java System Web Proxy Server には、この節で説明するような、多くのセキュリティー機能が用意されています。
暗号化とは、情報を対象とした受信者以外の人が読めないような内容にするための、変換プロセスのことです。復号化とは、暗号化された情報を判読可能な状態に戻すための、変換プロセスのことです。Proxy Server は、SSL (Secure Sockets Layer) および TLS (Transport Layer Security) 暗号化プロトコルをサポートしています。
暗号化方式とは、暗号化または復号化に使用する暗号アルゴリズム (数学関数) のことです。SSL と TLS プロトコルには、多数の暗号化方式のセットが含まれています。安全度は、暗号化方式によって異なります。一般的に、暗号化方式で使用するビット数が多いほど、データの復号化は難しくなります。
双方向の暗号化プロセスでは、必ず、送信側と受信側の両方が同じ暗号化方式を使用する必要があります。多数の暗号化方式があるため、最も一般的に使用されている方式に対してサーバーを有効にしておく必要があります。
セキュリティー保護された接続時には、クライアントとサーバーは、通信に、その双方が持てる最も強力な暗号化方式を使用します。SSL 2.0、SSL 3.0、および TLS プロトコルから暗号化方式を選択できます。
SSL 2.0 よりあとのバージョンで、セキュリティーとパフォーマンスが向上しています。システムに SSL 3.0 を使用できないクライアントが存在する場合を除き、SSL 2.0 を使用しないでください。クライアント証明書は、SSL 2.0 暗号化方式での動作が保証されていません。
暗号化プロセスだけでは、サーバーの機密情報のセキュリティー保護には十分ではありません。実際に暗号化結果を生成したり、すでに暗号化された情報を復号化するためには、暗号化方式と一緒に鍵を使用する必要があります。暗号化プロセスでは、この結果を出すために 2 つの鍵を使用します。これが、公開鍵と非公開鍵です。公開鍵を使用して暗号化された情報は、対応する非公開鍵を使用した場合にのみ復号化できます。公開鍵は、証明書の一部として発行されます。対応する非公開鍵だけがセキュリティー保護されます。
各種暗号化方式のセットについての説明と、鍵および証明書については、「Introduction to SSL」を参照してください。
サーバーが使用できる暗号化方式は指定できます。特定の暗号化方式を使わないようにする妥当な理由がないかぎり、すべての暗号化方式を選択する必要があります。ただし、最適でないと思われる暗号化方式を有効にする必要はありません。
「Enable No Encryption, Only MD5 Authentication」は選択しないでください。クライアント側でその他の暗号化方式を利用できない場合には、サーバーがデフォルトによりこの設定を使用し、暗号化は行われません。
ここでは、次の内容について説明します。
Proxy Server では、暗号化通信として SSL と TLS プロトコルをサポートしています。SSL と TLS はアプリケーションには依存せず、ユーザーに意識させずに、より高レベルのプロトコルをこれらの上に階層化することができます。
SSL および TLS プロトコルは、サーバーとクライアントでお互いを認証するために使用される多くの暗号化方式のサポート、証明書の送信、およびセッション鍵の確立を行います。クライアントとサーバーは、サポートしているプロトコルや、暗号化の強度についての会社の方針および暗号化されたソフトウェアの輸出に対する行政上の制約条件などの要因に基づいて、別の暗号化方式セットをサポートすることができます。他の機能の中でも特に、SSL と TLS ハンドシェイクプロトコルは、どの暗号化方式のセットを通信に使用するかをサーバーとクライアントが交渉する方法を決定します。
管理サーバーは SSL を使用して LDAP と通信するようにする必要があります。
ここでは、Proxy Server は SSL クライアントとして動作し、SSL サーバー LDAP 証明書に署名したルート CA 証明書をインポートしている必要があります。LDAP の SSL 証明書が一般的な CA が発行したものでない場合、使用する CA ルート鍵を Proxy Server 鍵ストアにインポートする必要があります。
管理サーバーにアクセスして、「Global Settings」タブをクリックします。
「Configure Directory Service」リンクをクリックします。
表示される表で、ディレクトリサービスのリンクをクリックします。
「Configure Directory Service」ページが表示されます。LDAP ベースのディレクトリサービスが作成されていない場合は、「Create New Service of Type」ドロップダウンリストから、「LDAP Server」を選択し、「New」をクリックしてディレクトリサービスを設定します。LDAP ベースのディレクトリサービスで表示される特定のフィールドについては、オンラインヘルプを参照してください。
接続に SSL を使用する場合は、「Yes」を選択して、「Save Changes」をクリックします。
Proxy Server (プロキシ) を順方向に実行していて、クライアントがセキュリティー保護されたサーバーに対してプロキシ経由の SSL 接続を要求した場合、プロキシは、セキュリティー保護されたサーバーへの接続を開き、セキュリティー保護されたトランザクションには介入せず、データを双方向にコピーします。このプロセスは、SSL トンネリングとして知られています。概要を次の図に示します。
HTTPS URL で SSL トンネリングを使用するには、クライアントが SSL と HTTPS の両方をサポートしている必要があります。HTTPS は、SSL と通常の HTTP を使用して実装されます。HTTPS をサポートしないクライアントでも、Proxy Server の HTTPS プロキシ機能を使用して、HTTPS ドキュメントにアクセスできます。
SSL トンネリングは、アプリケーションレベル (HTTPS) には影響を及ぼさない、下位レベルのアクティビティーです。SSL トンネリングは、プロキシ機能のない SSL と同じぐらいセキュリティー保護されています。間に Proxy Server が存在することで、セキュリティーが危険にさらされたり、SSL の機能が低下したりすることはありません。
データストリームは SSL を使用して暗号化されるため、プロキシは、実際のトランザクションにはアクセスできません。そのため、アクセスログでは、リモートサーバーから受け取った状態コードや、ヘッダー長を表示することができません。また、このプロセスにより、プロキシやサードパーティーのプロキシは、トランザクションを傍受できません。
プロキシがデータを見ることはないため、クライアントとリモートサーバーの間で使用されているプロトコルが SSL であることは確認できません。つまり、プロキシは、その他のプロトコルでやり取りされることを防ぐことができない、ということでもあります。Internet Assigned Numbers Authority (IANA) によって割り当てられている一般的な SSL ポートだけ、つまり、HTTPS の場合はポート 443、SNEWS の場合はポート 563 だけに SSL 接続を制限することをお勧めします。セキュリティー保護されたサーバーがその他のポートで稼働しているサイトがある場合は、 connect://.* リソースを使用して、特定ホストのその他のポートに接続できるように、明示的な例外を設定できます。
SSL トンネリング機能は、SOCKS に似た汎用の機能で、プロトコルから独立しています。そのため、この機能をその他のサービスにも利用できます。Proxy Server は、HTTPS や SNEWS プロトコルだけでなく、SSL に対応した任意のアプリケーションの SSL トンネリングに対応できます。
次の手順では、SSL をトンネリングするように Proxy Server を設定する方法について説明します。
サーバーマネージャーにアクセスしてサーバーインスタンスを選択し、「Routing」タブをクリックします。
「Enable/Disable Proxying」リンクをクリックします。
ドロップダウンリストから connect://.*.443 リソースを選択します。
connect:// 方式は、内部プロキシ表記であり、プロキシの外部には存在しません。connect については、「SSL トンネリングの技術的詳細」を参照してください。
その他のポートに接続を許可するには、テンプレートで類似の URL パターンを使用することができます。テンプレートについては、第 16 章「テンプレートとリソースの管理」を参照してください。
「Enable Proxying Of This Resource」を選択して、「了解」をクリックします。
プロキシの設定が正しくない場合は、ほかのユーザーがプロキシを利用して、実際に接続しているホストからではなく、プロキシホストから telnet 接続が行われているかのように見せることができます。このため、本当に必要なポート以外は決して許可しないでください。また、クライアントホストを制限するために、プロキシでアクセス制御を使用してください。
内部的には、SSL トンネリングでは、次のように CONNECT 方式を宛先ホスト名およびポート番号とともにパラメータとして使用し、空行を続けます。
CONNECT energy.example.com:443 HTTP/1.0
Proxy Server からの正常な応答は次のようになり、その後に空行が続きます。
HTTP/1.0 200 Connection establishedProxy-agent: Sun-Java-System-Web-Proxy-Server/4.0
その後、クライアントとリモートサーバーの間で接続が確立されます。どちらかが接続を閉じるまで、データを双方向に転送できます。
内部的には、URL パターンに基づいた典型的な設定機構を利用するために、ホスト名とポート番号は、自動的に次のような URL にマップされます。
connect://energy.example.com:443
connect:// は、Proxy Server で使用される内部表記であり、設定を容易にし、ほかの URL パターンと統一するために使用されます。Proxy Server の外部では connect URL は存在しません。Proxy Server がこのような URL をネットワークから受け取ると、無効としてマークし、要求の処理を拒否します。
次の方法で、サーバーの待機ソケットをセキュリティー保護できます。
セキュリティー機能を有効にする
待機ソケットのサーバー証明書を選択する
暗号化方式を選択する
セキュリティーは、転送プロキシモードではなく、逆プロキシモードでのみ有効にできます。
待機ソケット用に他のセキュリティー設定を行うには、セキュリティー機能を有効にしておく必要があります。新しい待機ソケットを作成したり、既存の待機ソケットを編集したりするときに、セキュリティー機能を有効にできます。
管理サーバーまたはサーバーマネージャーにアクセスし、「Preferences」タブをクリックします。
「Add Listen Socket」リンクをクリックします。
必要な情報を入力します。
待機ソケットを作成したあとでセキュリティーの設定を行うには、「Edit Listen Sockets」リンクを使用します。
セキュリティーをオンにするには、「Security」ドロップダウンリストから「Enabled」を選択して、「了解」をクリックします。
サーバー証明書がインストールされていない場合は、「Disabled」だけが選択できます。特定の設定については、オンラインヘルプを参照してください。
管理サーバーまたはサーバーマネージャーにアクセスし、「Preferences」タブをクリックします。
「Edit Listen Sockets」リンクをクリックします。
編集する待機ソケットのリンクをクリックします。
「Security」ドロップダウンリストから「Enabled」を選択して、「了解」をクリックします。
サーバー証明書がインストールされていない場合は、「Disabled」だけが選択できます。
管理サーバーまたはサーバーマネージャーのどちらかで、ユーザーが要求し、インストールしたサーバー証明書を使用するように待機ソケットを設定できます。
少なくとも 1 つの証明書をインストールしておく必要があります。
管理サーバーまたはサーバーマネージャーにアクセスし、「Preferences」タブをクリックします。
「Edit Listen Sockets」リンクをクリックします。
編集する待機ソケットのリンクをクリックします。
「Security」ドロップダウンリストから「Enabled」を選択して、「了解」をクリックします。
サーバー証明書がインストールされていない場合は、「Disabled」だけが選択できます。
「Server Certificate Name」ドロップダウンリストから待機ソケットのサーバー証明書を選択して、「了解」をクリックします。
Proxy Server のセキュリティーを保護するには、SSL を有効にすることをお勧めします。SSL 2.0、SSL 3.0 および TLS 暗号化プロトコルを有効にして、各種の暗号化方式セットを選択することができます。管理サーバーの待機ソケットで、SSL および TLS プロトコルを有効にできます。サーバーマネージャーの待機ソケットで SSL と TLS を有効にすると、特定のサーバーインスタンスに対して、これらのセキュリティーの詳細が設定されます。少なくとも 1 つの証明書をインストールしておく必要があります。
待機ソケットでの SSL 有効化は、Proxy Server が逆プロキシを実行するように設定されている場合のみ適用されます。
デフォルトの設定では、最も一般的に使用されている暗号化方式が使用できます。特定の暗号化方式を使用してはならない理由がある場合を除き、すべてを選択するようにします。
「TLS Rollback」の、デフォルトで推奨される設定は「Enabled」です。「Enabled」に設定すると、「人が介在するバージョンロールバック」攻撃を検出するようにサーバーが設定されます 。TLS 仕様を正しく実装できない一部のクライアントとの相互運用性を確保するために、「TLS Rollback」を「Disabled」に設定しなければならない場合があります。
「TLS Rollback」を無効にすると、通信がバージョンロールバック攻撃を受けやすくなります。バージョンロールバック攻撃は、第三者がクライアントおよびサーバーで SSL 2.0 などの古くてセキュリティー保護機能が低いプロトコルを使用して通信を行うようにするメカニズムです。SSL 2.0 プロトコルには既知の脆弱性があるため、「バージョンロールバック」攻撃を検出できない場合、第三者による暗号化された通信の傍受と復号化が容易になってしまいます。
管理サーバーまたはサーバーマネージャーにアクセスし、「Preferences」タブをクリックします。
「Edit Listen Sockets」リンクをクリックして、編集する待機ソケットのリンクをクリックします。
セキュリティー保護された待機ソケットの場合、利用できる暗号化方式の設定が表示されます。
待機ソケットのセキュリティー機能が有効になっていない場合は、SSL と TLS の情報は一覧表示されません。暗号化方式を使用するには、選択している待機ソケットでセキュリティー機能が有効になっている必要があります。詳細は、「待機ソケットのセキュリティーの有効化」を参照してください。
必要な暗号化方式セットに対応するチェックボックスを選択して、「了解」をクリックします。
Netscape Navigator 6.0 では、TLS と SSL 3.0 の両方を選択します。「TLS Rollback」の場合にも、TLS を選択して、SSL 3.0 と SSL 2.0 の両方が無効になっていることを確認してください。
サーバーで SSL が有効になったら、そのURL には http の代わりに https が使用されます。SSL 有効サーバー上のドキュメントを示す URL の書式は次のとおりです。 https://servername.domain .dom: port、例、https://admin.example.com:443
デフォルトのセキュリティー保護された HTTP ポート番号 (443) を使用する場合には、URL にポート番号を入力する必要はありません。
SSL が有効なサーバーをインストールすると、グローバルセキュリティーパラメータのサーバーのメイン設定ファイルである magnus.conf ファイル内に指令エントリが作成されます。
SSLSessionTimeout 指令は、SSL 2.0 セッションのキャッシュを制御します。構文は次のとおりです。
SSLSessionTimeout seconds
ここで seconds は、キャッシュされた SSL セッションが無効になるまでの秒数です。デフォルト値は 100 です。SSLSessionTimeout 指令が指定された場合には、秒数値は暗黙的に 5 〜 100 秒の間に制限されます。
キャッシュ可能な SSL セッションの数を指定します。
SSL3SessionTimeout 指令は、SSL 3.0 および TLS セッションのキャッシュを制御します。構文を次に示します。
SSL3SessionTimeout seconds
ここで seconds は、キャッシュされた SSL 3.0 セッションが無効になるまでの秒数です。デフォルト値は 86400 (24 時間) です。SSL3SessionTimeout 指令が指定された場合には、秒数値は暗黙的に 5 〜 86400 秒の間に制限されます。
サーバーマネージャーから、サーバーインスタンスを選択します。
設定する待機ソケットでセキュリティーが有効になっていることを確認してください。
詳細は、「待機ソケットのセキュリティーの有効化」を参照してください。
magnus.conf ファイルを手動で編集し、次の設定の値を入力します。
SSLSessionTimeout
SSLCacheEntries
SSL3SessionTimeout
magnus.conf の詳細については、『Sun Java System Web Proxy Server 4.0.4 Configuration File Reference 』を参照してください。