ヘッダーをスキップ

Oracle Application Server 管理者ガイド
10gリリース3(10.1.3.1.0)

B31834-01
目次
目次
索引
索引

戻る 次へ

10 Oracle Application ServerのSecure Sockets Layer(SSL)の概要

Oracle Application Serverでは、コンポーネント間でリクエストの送信とレスポンスの受信が行われます。これらのコンポーネントは、Oracle Application Serverコンポーネント(Oracle HTTP Server、OC4Jアプリケーション、Oracle Single Sign-Onなど)またはブラウザなどの外部クライアントのいずれかです。


注意

この章では、次のOracle Application Server製品を参照する情報は、リリース10.1.4、リリース2(10.1.2)またはそれ以前のソフトウェアにのみ該当します。

  • Oracle Single Sign-On

  • Oracle Web Cache

  • OracleAS Certificate Authority

  • Oracle Delegated Administration Services

  • Oracle Identity Management

  • OracleAS Portal

10gリリース3(10.1.3.1.0)と互換性のある各バージョンの詳細は、Oracle Application Serverのアップグレード・ガイドを参照してください。 


これらの通信を保護するには、SSLを使用するようにOracle Application Serverを構成します。SSLは、通信を保護するための業界標準です。Oracle Application ServerではSSLバージョン2および3に加えて、TLSバージョン1をサポートしています。

この章では、SSLの概要と、Oracle Application ServerでのSSLの使用方法について説明します。この章の項目は次のとおりです。

10.1 SSLの機能

SSLは、メッセージの暗号化、整合性および認証を提供することで、通信を保護します。SSL標準により、関係するコンポーネント(ブラウザやHTTPサーバーなど)は、どの暗号化、認証および整合性メカニズムを使用するかのネゴシエーションができます。

10.2 秘密鍵と公開鍵の暗号化について

メッセージの整合性、認証および暗号化を提供するために、SSLでは秘密鍵と公開鍵の両方の暗号化を使用します。

秘密鍵の暗号化

秘密鍵、つまり対称鍵の暗号化では、通信を保護する目的で2者以上が共有する1つの秘密鍵が必要です。この鍵は、当事者間で送信された安全なメッセージを暗号化および復号化するために使用します。これを行うには、安全な方法で各当事者に鍵を事前に配布しておく必要があります。この方法における問題点は、鍵を安全に転送し、格納することが困難なことです。

SSLでは、各当事者は互いに認識している乱数を使用して秘密鍵を個別に計算します。次に、その秘密鍵を使用して暗号化したメッセージを送信します。

公開鍵の暗号化

公開鍵の暗号化では、公開鍵と秘密鍵のペアおよび安全なキーの配布方法を使用して、この問題を解決します。自由に使用可能な公開鍵は、関連する秘密鍵の保持者のみが復号化できるメッセージを暗号化するために使用します。秘密鍵は、他のセキュリティ資格証明とともに、Oracle Walletなどの暗号化されたコンテナ内に安全に格納されます。

公開鍵のアルゴリズムでは、メッセージの秘密は保証されますが、安全な通信は必ずしも保証されません。その理由は、通信者間の識別が検証されないためです。安全な通信を確立するには、メッセージの暗号化に使用される公開鍵が相手の受信者に実際に属していることを確認することが重要です。そうしないと、第三者が通信を傍受し、公開鍵のリクエストに割り込み、正当な鍵を独自の公開鍵に置き換えることが可能になります(介在者攻撃)。

このような攻撃を避けるためには、公開鍵の所有者を確認する必要があります。これは認証と呼ばれるプロセスです。認証は、認証局(CA)を介して行うことができます。CAは、両通信者間によって信頼されている第三者です。

CAは、エンティティの名前、公開鍵および他のセキュリティ資格証明を含む公開鍵証明書を発行します。通常、このような資格証明には、CA名、CAの署名および証明書の有効日(開始日、終了日)が含まれています。

CAでは独自の秘密鍵を使用してメッセージを暗号化します。一方、そのメッセージの復号化には公開鍵が使用されるため、メッセージがCAによって暗号化されたものであるかどうかが確認されます。CA公開鍵は広く一般に知られているため、アクセスするたびに認証する必要はありません。このようなCA公開鍵はWalletに格納されます。

10.3 SSLセッションの設定方法(SSLハンドシェイク)

SSLプロトコルには、ハンドシェイク・フェーズとデータ転送フェーズという2つのフェーズがあります。ハンドシェイク・フェーズでは、サーバーおよびオプションでクライアントを認証し、データ転送フェーズで転送されるデータを保護するための暗号化鍵を設定します。

クライアントがサーバーへのSSL接続を要求すると、クライアントとサーバーはまずハンドシェイク・フェーズでメッセージを交換します(一般的なシナリオとしては、http://ではなくhttps://プロトコルを使用して、サーバーからページを要求するブラウザがあります。HTTPSプロトコルは、HTTPでSSLを使用することを示します)。

図10-1に、Webサーバーとブラウザ間の一般的なSSL接続用ハンドシェイク・メッセージを示します。この図では次の手順を示しています。

  1. クライアントは、サーバーにハロー・メッセージを送信します。

    メッセージには、クライアントがサポートしているアルゴリズムの一覧および鍵を生成するための乱数が含まれています。

  2. サーバーは、クライアントにハロー・メッセージを送信してレスポンスを返します。このメッセージには、次の内容が含まれています。

    • 使用するアルゴリズム。これは、クライアントが送信した一覧から、サーバーによって選択されます。

    • 鍵の生成に使用する乱数。

  3. サーバーは、クライアントに証明書を送信します。

  4. クライアントがサーバーの証明書を使用してサーバーを認証します。

  5. クライアントが乱数(プリマスタ・シークレット)を生成し、サーバーの公開鍵を使用して暗号化し、サーバーに送信します。

  6. サーバーは、秘密鍵を使用してメッセージを復号化し、プリマスタ・シークレットを取得します。

  7. クライアントとサーバーは、SSLセッションで使用される鍵を個別に計算します。

    これらの鍵は、互いに認識しているプリマスタ・シークレットと乱数に基づいて計算されるため、それぞれの相手には送信されません。鍵には次の内容が含まれています。

    • クライアントがサーバーへの送信前にデータを暗号化するために使用する暗号化鍵

    • サーバーがクライアントへの送信前にデータを暗号化するために使用する暗号化鍵

    • クライアントがデータのメッセージ・ダイジェストを作成するために使用する鍵

    • サーバーがデータのメッセージ・ダイジェストを作成するために使用する鍵

    暗号化鍵は、対称的です。つまり、データの暗号化と復号化には同じ鍵が使用されます。

  8. クライアントとサーバーは、相互に終了メッセージを送信します。これらは前の手順で生成した鍵を使用して送信される最初のメッセージ(最初の安全なメッセージ)です。

    終了メッセージには、各当事者が送信した以前のハンドシェイク・メッセージがすべて含まれています。各当事者は、受信した以前のメッセージが、終了メッセージに含まれているメッセージに一致するかどうかを確認します。これは、ハンドシェイク・メッセージが改ざんされていないことを確認するためです。

  9. クライアントとサーバーは、暗号化鍵とハッシュ鍵およびアルゴリズムを使用してデータを転送します。

    図10-1    SSLハンドシェイク


    画像の説明

10.4 Oracle Application ServerでSSLを使用するための要件

Oracle Application ServerでSSLを使用する手順は次のとおりです。

この章の次の項で、これらのトピックについて詳しく説明します。

10.5 証明書とOracle Wallet

サイトには証明書が必要です。SSL通信を要求しているサイトにクライアントが接続する場合、接続先のサイトでは証明書をクライアントに送信し、クライアントがサイトを認証できるようにする必要があります。

Oracle Application Serverでは、X.509 V3証明書およびPKIX標準(RFC 3280)に準拠する証明書をサポートしています。

10.5.1 証明書の取得方法

証明書は認証局(CA)から取得します。CAは、独自の秘密鍵を使用して発行した証明書に署名する、信頼されたエンティティです。クライアントは(CAの公開鍵を使用して)証明書の発行者を確認できます。CAの例には、VeriSign(http://www.verisign.com)やThawte(http://www.thawte.com)などがあります。

Oracle Application Serverにも、OracleAS Certificate Authority(OCA)と呼ばれる認証局があります。OCAを使用すると、独自の認証局を設定できます。詳細は、『Oracle Application Server Certificate Authority管理者ガイド』を参照してください。

証明書を取得するには、証明書リクエストをCAに送信します。証明書リクエストには、独自の公開鍵を含む情報が含まれています。証明書リクエストを生成するには、ツールを使用できます。これらのツールは、秘密鍵と公開鍵のペアを生成します。証明書リクエストを生成できるツールには、Oracle Wallet ManagerやSun社のkeytool(OC4J専用)などがあります。Oracle Wallet Managerの詳細は、第11章「Walletと証明書の管理」を参照してください。

証明書には、他の項目とともに、次のデータが含まれています。

証明書は、期限が切れるか、取り消されるまで有効です。

OracleAS Certificate Authority(OCA)を使用してサーバーの証明書を作成した場合、ほとんどのブラウザではブラウザのユーザーからの入力がないかぎり、これらの証明書を受け入れません。これは、ほとんどのブラウザは特定のCAからの証明書のみを受け入れるように事前に構成されており、OCAはその中に含まれていないためです。ブラウザでは、ユーザーがサーバーからの証明書を受け入れるか、CAの証明書をインポートしないかぎり、サーバーからの証明書を拒否します。

この問題は、CAの証明書がブラウザにインポートされるまで、すべてのCAに対して発生します。詳細は、『Oracle Application Server Certificate Authority管理者ガイド』を参照してください。

10.5.2 Oracle Wallet

Oracle Walletは、証明書、証明書リクエスト、秘密鍵などの資格証明を格納するコンテナです。Oracle Walletは、ファイル・システムまたはOracle Internet DirectoryなどのLDAPディレクトリに格納できます。Oracle Walletは、パスワードで保護されています。

Oracle Walletは、Oracle Wallet Managerを使用して管理します。Oracle Wallet Managerでは、Oracle Walletの作成、証明書リクエストの作成、Walletへの証明書のインポート、LDAPディレクトリへのWalletのアップロードなどのタスクを実行できます。

Oracle Wallet Managerは、PKCS #11とPKCS #12のWalletをサポートしています。

Oracle Walletを使用するコンポーネント

SSLサーバーとして機能するOracle Application Serverコンポーネントには、Oracle Walletが必要です(Walletにはサーバーが使用する証明書がすでに含まれています)。これらのコンポーネントには、Oracle HTTP Server、Oracle Web Cache、OPMN、Oracle Internet Directory、ポート・トンネリング・デーモン(iaspt)などがあります。

コンポーネントは、Oracle Walletの場所を使用して構成します。たとえば、SSL対応のOracle HTTP Serverを構成するには、SSL Walletディレクティブを使用してWalletの場所を指定します。コンポーネントのWalletの場所を指定する方法については、コンポーネントのマニュアルを参照してください。


注意

OC4Jコンポーネントでは、Oracle Walletではなくキーストアを使用して証明書を格納します。証明書をキーストアにインポートするには、keytoolというツールを使用します。キーストアとkeytoolの詳細は、『Oracle Containers for J2EEセキュリティ・ガイド』を参照してください。 


10.5.3 クライアント証明書

クライアントを認証する必要がある場合は、クライアントに証明書の送信を要求するようにOracle HTTP Serverを構成します。クライアントはCAから証明書を取得することもできます。

クライアントがOracleのコンポーネントである場合(たとえばOracle Web CacheはOracle HTTP Serverと通信する際にクライアントとして機能できる)、クライアントのコンポーネントは、クライアントの証明書をOracle Walletに格納できます。OPMNがSSLに対応するように構成されているときは、OPMNもクライアントして機能します。

クライアントがブラウザである場合、クライアントにはOracle Walletは必要ありません。証明書はブラウザにインポートできます。

SOAPやWebサービス・クライアントなどの他の種類のクライアントには、証明書と証明書ストアを構成する独自の方法があります。

10.6 SSL構成の概要

Oracle Application ServerのコンポーネントがSSLを使用できるようにするには、Application Server Controlを使用します。場合によっては、構成ファイルを手動で編集します。

SSLは、クライアントとサーバー間の通信を保護します。たとえばクライアント・ブラウザ、Oracle Web Cache、Oracle HTTP ServerおよびOC4Jなど、3者以上が関与している場合は、すべてのコンポーネントでSSLを使用するように構成する必要があります。

図10-2に、Oracle Application Serverコンポーネントと、これらのコンポーネントが使用するプロトコル間の一般的な通信パスを示します。たとえば、ブラウザはHTTPを使用してOracle Web Cacheと通信し、Oracle HTTP ServerはAJPを使用してOC4Jと通信します。これらすべてのプロトコルは、SSLに対応しています。

図10-2    Oracle Application Serverのコンポーネント間の通信パス


画像の説明

10.6.1 デフォルトのSSL構成

Oracle Application Serverのインストールでデフォルトのオプションを選択した場合は、いずれのコンポーネントもSSLに対応するように構成されていません。

Oracle Internet Directoryのホストとポートを指定するインストール画面には、「Oracle Internet DirectoryにはSSL接続のみ使用」というオプションがあります。このオプションを選択した場合は、Oracle Internet DirectoryのSSLポート番号を指定する必要があります。インストーラは、実行時にSSLのみをOracle Internet Directoryとの通信に使用するようにコンポーネントを構成します。

10.6.2 部分的なSSL構成

Oracle Application Serverでは、保護するパスに対してのみSSLを構成できます。図10-2に示すように、コンポーネントが使用するパスは数多くあります。

次のような理由から、すべてのパスを保護することは好ましくない場合があります。

10.7 ハードウェア・セキュリティ・モジュールとの統合

クライアントがSSLを使用してサイトに接続すると、SSLに必要な追加の処理によってサイトのサーバーの負荷が大きくなり、サイト全体(SSLおよびSSL以外の接続)のパフォーマンスとスループットが低下します。このような場合は、SSLアクセラレータ・ハードウェアにSSLの計算を委託して、パフォーマンスを改善することを考慮してください。

SSLアクセラレータのタイプ:

10.7.1 プロトコル・コンバータ

プロトコル・コンバータは、HTTPSトラフィックをHTTPに変換します。プロトコル・コンバータは、スタンドアロンのハードウェア・マシンです。Oracle Application Serverでは次のような企業のプロトコル・コンバータをサポートしています。

10.7.2 演算アクセラレータ(PKCS #11の統合)

演算アクセラレータは、SSLが使用する数式演算の速度を向上します。このようなデバイスは、通常は(TCP/IPを経由して)サーバーに接続します。また、多くの場合、このようなデバイスには鍵の管理や安全なキーストアなどの追加機能が備わっています。

Oracle Application Serverでは、PKCS #11標準に準拠している演算アクセラレータをサポートしています。認定済アクセラレータの一覧は、OracleMetaLinkサイトhttp://www.oracle.com/support/metalink/index.htmlを参照してください。


戻る 次へ
Oracle
Copyright © 2002, 2006, Oracle.

All Rights Reserved.
目次
目次
索引
索引