Oracle Application Server 管理者ガイド 10gリリース3(10.1.3.1.0) B31834-01 |
|
Oracle Application Serverでは、コンポーネント間でリクエストの送信とレスポンスの受信が行われます。これらのコンポーネントは、Oracle Application Serverコンポーネント(Oracle HTTP Server、OC4Jアプリケーション、Oracle Single Sign-Onなど)またはブラウザなどの外部クライアントのいずれかです。
これらの通信を保護するには、SSLを使用するようにOracle Application Serverを構成します。SSLは、通信を保護するための業界標準です。Oracle Application ServerではSSLバージョン2および3に加えて、TLSバージョン1をサポートしています。
この章では、SSLの概要と、Oracle Application ServerでのSSLの使用方法について説明します。この章の項目は次のとおりです。
SSLは、メッセージの暗号化、整合性および認証を提供することで、通信を保護します。SSL標準により、関係するコンポーネント(ブラウザやHTTPサーバーなど)は、どの暗号化、認証および整合性メカニズムを使用するかのネゴシエーションができます。
クライアントは、サーバー証明書内の証明連鎖を検証することで、サーバーが本物であることを確認します。サーバー証明書は、サーバー証明書に署名した認証局(CA)により保証されています。
また、サーバーがクライアントの識別を認証する必要がある場合には、サーバーがクライアントに証明書の所持を要求することもできます。
メッセージの整合性、認証および暗号化を提供するために、SSLでは秘密鍵と公開鍵の両方の暗号化を使用します。
秘密鍵、つまり対称鍵の暗号化では、通信を保護する目的で2者以上が共有する1つの秘密鍵が必要です。この鍵は、当事者間で送信された安全なメッセージを暗号化および復号化するために使用します。これを行うには、安全な方法で各当事者に鍵を事前に配布しておく必要があります。この方法における問題点は、鍵を安全に転送し、格納することが困難なことです。
SSLでは、各当事者は互いに認識している乱数を使用して秘密鍵を個別に計算します。次に、その秘密鍵を使用して暗号化したメッセージを送信します。
公開鍵の暗号化では、公開鍵と秘密鍵のペアおよび安全なキーの配布方法を使用して、この問題を解決します。自由に使用可能な公開鍵は、関連する秘密鍵の保持者のみが復号化できるメッセージを暗号化するために使用します。秘密鍵は、他のセキュリティ資格証明とともに、Oracle Walletなどの暗号化されたコンテナ内に安全に格納されます。
公開鍵のアルゴリズムでは、メッセージの秘密は保証されますが、安全な通信は必ずしも保証されません。その理由は、通信者間の識別が検証されないためです。安全な通信を確立するには、メッセージの暗号化に使用される公開鍵が相手の受信者に実際に属していることを確認することが重要です。そうしないと、第三者が通信を傍受し、公開鍵のリクエストに割り込み、正当な鍵を独自の公開鍵に置き換えることが可能になります(介在者攻撃)。
このような攻撃を避けるためには、公開鍵の所有者を確認する必要があります。これは認証と呼ばれるプロセスです。認証は、認証局(CA)を介して行うことができます。CAは、両通信者間によって信頼されている第三者です。
CAは、エンティティの名前、公開鍵および他のセキュリティ資格証明を含む公開鍵証明書を発行します。通常、このような資格証明には、CA名、CAの署名および証明書の有効日(開始日、終了日)が含まれています。
CAでは独自の秘密鍵を使用してメッセージを暗号化します。一方、そのメッセージの復号化には公開鍵が使用されるため、メッセージがCAによって暗号化されたものであるかどうかが確認されます。CA公開鍵は広く一般に知られているため、アクセスするたびに認証する必要はありません。このようなCA公開鍵はWalletに格納されます。
SSLプロトコルには、ハンドシェイク・フェーズとデータ転送フェーズという2つのフェーズがあります。ハンドシェイク・フェーズでは、サーバーおよびオプションでクライアントを認証し、データ転送フェーズで転送されるデータを保護するための暗号化鍵を設定します。
クライアントがサーバーへのSSL接続を要求すると、クライアントとサーバーはまずハンドシェイク・フェーズでメッセージを交換します(一般的なシナリオとしては、http://
ではなくhttps://
プロトコルを使用して、サーバーからページを要求するブラウザがあります。HTTPSプロトコルは、HTTPでSSLを使用することを示します)。
図10-1に、Webサーバーとブラウザ間の一般的なSSL接続用ハンドシェイク・メッセージを示します。この図では次の手順を示しています。
メッセージには、クライアントがサポートしているアルゴリズムの一覧および鍵を生成するための乱数が含まれています。
これらの鍵は、互いに認識しているプリマスタ・シークレットと乱数に基づいて計算されるため、それぞれの相手には送信されません。鍵には次の内容が含まれています。
暗号化鍵は、対称的です。つまり、データの暗号化と復号化には同じ鍵が使用されます。
終了メッセージには、各当事者が送信した以前のハンドシェイク・メッセージがすべて含まれています。各当事者は、受信した以前のメッセージが、終了メッセージに含まれているメッセージに一致するかどうかを確認します。これは、ハンドシェイク・メッセージが改ざんされていないことを確認するためです。
Oracle Application ServerでSSLを使用する手順は次のとおりです。
この章の次の項で、これらのトピックについて詳しく説明します。
サイトには証明書が必要です。SSL通信を要求しているサイトにクライアントが接続する場合、接続先のサイトでは証明書をクライアントに送信し、クライアントがサイトを認証できるようにする必要があります。
Oracle Application Serverでは、X.509 V3証明書およびPKIX標準(RFC 3280)に準拠する証明書をサポートしています。
証明書は認証局(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管理者ガイド』を参照してください。
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をサポートしています。
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の場所を指定する方法については、コンポーネントのマニュアルを参照してください。
クライアントを認証する必要がある場合は、クライアントに証明書の送信を要求するようにOracle HTTP Serverを構成します。クライアントはCAから証明書を取得することもできます。
クライアントがOracleのコンポーネントである場合(たとえばOracle Web CacheはOracle HTTP Serverと通信する際にクライアントとして機能できる)、クライアントのコンポーネントは、クライアントの証明書をOracle Walletに格納できます。OPMNがSSLに対応するように構成されているときは、OPMNもクライアントして機能します。
クライアントがブラウザである場合、クライアントにはOracle Walletは必要ありません。証明書はブラウザにインポートできます。
SOAPやWebサービス・クライアントなどの他の種類のクライアントには、証明書と証明書ストアを構成する独自の方法があります。
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に対応しています。
Oracle Application Serverのインストールでデフォルトのオプションを選択した場合は、いずれのコンポーネントもSSLに対応するように構成されていません。
Oracle Internet Directoryのホストとポートを指定するインストール画面には、「Oracle Internet DirectoryにはSSL接続のみ使用」というオプションがあります。このオプションを選択した場合は、Oracle Internet DirectoryのSSLポート番号を指定する必要があります。インストーラは、実行時にSSLのみをOracle Internet Directoryとの通信に使用するようにコンポーネントを構成します。
Oracle Application Serverでは、保護するパスに対してのみSSLを構成できます。図10-2に示すように、コンポーネントが使用するパスは数多くあります。
次のような理由から、すべてのパスを保護することは好ましくない場合があります。
クライアントがSSLを使用してサイトに接続すると、SSLに必要な追加の処理によってサイトのサーバーの負荷が大きくなり、サイト全体(SSLおよびSSL以外の接続)のパフォーマンスとスループットが低下します。このような場合は、SSLアクセラレータ・ハードウェアにSSLの計算を委託して、パフォーマンスを改善することを考慮してください。
SSLアクセラレータのタイプ:
プロトコル・コンバータは、HTTPSトラフィックをHTTPに変換します。プロトコル・コンバータは、スタンドアロンのハードウェア・マシンです。Oracle Application Serverでは次のような企業のプロトコル・コンバータをサポートしています。
演算アクセラレータは、SSLが使用する数式演算の速度を向上します。このようなデバイスは、通常は(TCP/IPを経由して)サーバーに接続します。また、多くの場合、このようなデバイスには鍵の管理や安全なキーストアなどの追加機能が備わっています。
Oracle Application Serverでは、PKCS #11標準に準拠している演算アクセラレータをサポートしています。認定済アクセラレータの一覧は、OracleMetaLinkサイトhttp://www.oracle.com/support/metalink/index.htmlを参照してください。
|
Copyright © 2002, 2006, Oracle. All Rights Reserved. |
|