6 Oracle Fusion MiddlewareでのSSLの構成

Secure Sockets Layer (SSL)を使用して、Web層、中間層およびデータ層においてOracle Fusion Middlewareコンポーネント間の通信を保護します。この章では、通信を保護するための手順、基本的なトポロジよりさらに高度なシナリオおよびベスト・プラクティスについて説明します。

ノート:

このドキュメントでは、トランスポート・レイヤー・セキュリティ(TLS)を含むセキュアなトランスポート・メカニズムを表すために、SSLという用語が一般的に使用されています。

SSL/TLSハンドシェイク時にクライアントが使用できる暗号スイートについて学習するには、コンポーネント固有のドキュメントを参照してください。

ノート:

Oracle WebLogic Server内でSSL接続を構成する場合、ここでの手順を再現するのではなく、この章で紹介しているコンポーネントの関連ドキュメントを参照してください。

SSLのしくみ

Secure Sockets Layer (SSL)は、安全ではないネットワーク上の2つのエンティティ(クライアントとサーバー)間に保護された通信を提供します。SSL通信を実現するには、ハンドシェイク・フェーズとデータ転送フェーズの両方で一連のプロトコルを使用します。SSLや暗号化(通常、Oracleウォレットおよびキーストア)の基本概念について確認することもできます。

SSLの機能

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

暗号化を行うと、正当な受信者のみがメッセージを読むことができ機密が保持されます。SSLでは、様々な暗号化アルゴリズムを使用してメッセージを暗号化できます。各SSLセッションの開始時に行われるSSLハンドシェイク中、クライアントとサーバーは、どのアルゴリズムを使用するかのネゴシエーションを行います。SSLがサポートしている暗号化アルゴリズムには、AES、RC4、3DESなどがあります。

整合性により、クライアントが送信したメッセージが改ざんされずに正当なサーバーに届きます。メッセージの整合性を確保するために、クライアントはハッシュ機能を使用してメッセージをダイジェストにハッシュし、このメッセージ・ダイジェストをサーバーに送信します。サーバーは、さらにこのメッセージをダイジェストにハッシュし、これらのダイジェストを比較します。SSLでは、2つの異なるメッセージから同じダイジェストをコンピュータで生成するのが不可能なハッシュ機能を使用しているため、サーバーでは2つのダイジェストが一致しない場合には、何者かによりメッセージが改ざんされたとみなすことができます。SSLがサポートしているハッシュ機能の1つに、SHA2があります。

認証を使用すると、サーバーとクライアントは互いに相手の身元を確認できます。クライアントがSSLセッションを開始すると、サーバーは通常、サーバー自身の証明書をクライアントに送信します。証明書とは、VeriSignなどの信頼できる認証局によって発行されるデジタルIDです。「キーストア、ウォレットおよび証明書の管理」では、証明書について詳細に説明しています。

クライアントは、サーバー証明書内の証明連鎖を検証することで、サーバーが本物であることを確認します。サーバー証明書は、サーバー証明書に署名した認証局(CA)により保証されています。

また、サーバーがクライアントの識別を認証する必要がある場合には、サーバーがクライアントに証明書の所持を要求することもできます。

秘密キーと公開キーの暗号化について

SSLでは、秘密キーと公開キーの両方の暗号化を使用して、メッセージの整合性、認証および暗号化を実現します。

秘密キーの暗号化

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

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

公開キーの暗号化

公開キーの暗号化による公開キー/秘密キーのペアおよびキー配布のための安全な方法を採用することで、この問題は解決します。対応する秘密キーの所有者のみが復号化できるメッセージは、自由に使用できる公開キーによって暗号化できます。秘密キーは、その他のセキュリティ資格証明とともに、Oracleウォレットなどの暗号化されたコンテナに安全に格納されます。

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

そうした攻撃を避けるには、認証と呼ばれるプロセスにより、公開キーの所有者を検証することが必要です。その際に、通信の両当事者により信頼された、認証局(CA)と呼ばれる第三者機関が、この認証プロセスを実行できます。

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

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

キーストアおよびウォレット

Oracle Fusion Middlewareでは、Oracle HTTP Serverなどのコンポーネントにおいて、記憶域メカニズムとしてOracleウォレットが使用されます。Oracleウォレットは、証明書、信頼できる証明書、証明書リクエスト、秘密キーなどの資格証明を格納するコンテナです。

Oracle Internet DirectoryなどのLDAPディレクトリやファイル・システムにOracleウォレットを格納できます。Oracleウォレットは、パスワードで保護することも自動ログインにもできます。

Oracle HTTP ServerではOracleウォレットが使用されます。Oracle HTTP ServerでのSSLの構成では、Oracleウォレットを設定および使用する必要があります。

ノート:

Oracle Fusion Middleware 12c (12.1.3)の時点では、キーストア・サービスで使用できる中央記憶域および統合管理を利用して、該当するサービスのエクスポート、インポートおよび同期化機能により、ウォレットとその内容を管理できます。importKeyStoreexportKeyStoreおよびsyncKeyStoreコマンドの詳細は、『インフラストラクチャ・セキュリティWLSTコマンド・リファレンス』インフラストラクチャ・セキュリティ・カスタムWLSTコマンドに関する項を参照してください。

他のコンポーネントはJKSキーストアまたはKSSキーストアを使用してキーと証明書を保管するので、これらのコンポーネントのSSLの構成では、適切なキーストアを使用して設定する必要があります。

キーストアおよびウォレットの構成の詳細は、次を参照してください。

SSLセッションのしくみ

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

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

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

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

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

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

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

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

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

  4. クライアントは、サーバーの証明書の妥当性、発行者CAおよびオプションでサーバーのホスト名がサブジェクトDNと一致するかどうかをチェックして、サーバーを認証します。クライアントはセッション・キャッシュのセッションIDを送信します。

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

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

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

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

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

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

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

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

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

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

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

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

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

図6-1の説明が続きます
「図6-1 SSLハンドシェイク」の説明

Oracle Fusion MiddlewareにおけるSSLについて

SSL通信の要となるキーストアおよびウォレットと、Oracle Fusion MiddlewareでサポートされるTLS暗号ライブラリのようなその他の機能について確認できます。

この項では、Oracle Fusion MiddlewareにおけるSSLについて説明します。この項の内容は、次のとおりです。

Oracle Fusion MiddlewareアーキテクチャにおけるSSL

このトピックでは、アーキテクチャにおけるOracle Fusion Middlewareの各種コンポーネント間でのSSL通信の役割について説明します。

図6-2 Oracle Fusion MiddlewareにおけるSSL

図6-2の説明が続きます
「図6-2 Oracle Fusion MiddlewareにおけるSSL」の説明

ノート:

  • 図6-2のラベル「Oracle Enterprise Manager」は、Fusion Middleware Controlのユーザー・インタフェースを指します。

  • その他の管理ツールは、特定のタスクで使用できます。

図6-2で示されるOracle Fusion Middlewareアーキテクチャにおいて、丸はSSLを有効にできるエンドポイントを表します。それぞれのエンドポイントの構成の詳細は、次の項目を参照してください。

  1. 「Fusion Middleware Controlを使用したOracle HTTP Server仮想ホストへのインバウンド・リクエストでのSSLの有効化」および「WLSTを使用したOracle HTTP Server仮想ホストへのインバウンド・リクエストでのSSLの有効化」

  2. 「Oracle HTTP Serverからのアウトバウンド・リクエストでのSSLの有効化」

  3. 「Oracle WebLogic ServerへのインバウンドSSLの構成」

  4. LDAPサーバーへのアウトバウンド接続は、Oracle Platform Security ServicesまたはOracle WebLogic Serverから発生します。

    1. Oracle Platform Security ServicesからLDAPへのアウトバウンドSSLの構成

    2. LDAPオーセンティケータからLDAPへのアウトバウンドSSLの構成

  5. データ・ソースでのSSLの有効化

  6. Oracle DatabaseでのSSLの有効化

  7. アプリケーションのクライアント側のSSL

  8. 「Oracle WebLogic ServerからのアウトバウンドSSLの構成」

  9. Oracle DatabaseでのSSLの有効化

キーストアおよびウォレット

キーストアおよびウォレットはSSL構成の中心となり、これらを使用して証明書およびキーを保存します。

詳細は、「キーストアおよびOracleウォレット」を参照してください。

キーストアおよびOracleウォレット

Oracle Fusion Middleware 12c (12.2.1.1)では、キーと証明書のために様々なタイプのキーストアをサポートしています。

  • JKSベースのキーストアとトラストストア

    Oracle WebLogic Serverは、アップグレードした環境でJKSキーストアを使用します。

    JDKのkeytoolユーティリティでJKSキーストアおよび証明書を管理します。

  • Oracleウォレット

    Oracle HTTP Serverなどのシステム・コンポーネントではOracleウォレットを使用します。

    システム・コンポーネントのウォレットとその証明書を管理するには、Fusion Middleware Controlまたはコマンド行WLSTとorapkiインタフェースを使用します。Fusion Middleware ControlまたはWLSTのいずれかを使用して、これらのコンポーネントのリスナーでSSLを有効化できます。

  • OPSSキーストア・サービス(KSS)のキーストアおよびトラストストア

    キーストア・サービスでは、キーと証明書を管理するために、かわりのメカニズムが用意されています。12c (12.2.1.1)を新しくインストールした場合、Oracle WebLogic Serverは初期状態でKSSキーストアを使用します。

    KSSキーストアおよびその証明書を管理するには、Fusion Middleware ControlまたはWLSTを使用します。WebLogicサーバーのリスナーでSSLを有効化するには、WebLogicコンソールを使用します。

これらのストアのタイプと、どのストアのタイプをいつ使用するかについては、「キーストアおよびウォレット」を参照してください。

関連項目:

キーストアの管理は、「Oracle Fusion Middlewareでのキーおよび証明書の保存」を参照してください。

JDK8ではkeyCertSignを持つkeyUsageが必要

JDK8では、SSL構成で使用する自己署名付きCA証明書に、keyCertSignがアサートされたkeyUsage拡張機能が存在している必要があります。詳細は、「JDK8の証明書ではkeyUsage拡張機能が必要」を参照してください。

Oracle Fusion MiddlewareでのTLSプロトコルのサポート

Oracle Fusion Middlewareでは、TLS v1.2暗号ライブラリをサポートしています。ただし、ライブラリはデフォルトでは有効でない可能性があるため、コンポーネント内でこのプロトコルを構成する必要があります。

表は、関連する手順へのリンクを示しています。

表6-1 Oracle Fusion MiddlewareコンポーネントでのTLS v1.2のサポート

コンポーネント/機能 TLSのドキュメント

Oracle HTTP Server

『Oracle HTTP Serverの管理』SSLProtocolに関する項を参照してください

Oracle WebLogic Server

『Oracle WebLogic Serverセキュリティの管理』SSLプロトコルのバージョンの指定に関する項

Oracle Traffic Director

『Oracle Fusion Middleware Oracle Traffic Directorの管理』「セキュリティの管理」

『Oracle Traffic Director WebLogic Scripting Toolコマンド・リファレンス』SSL管理に関する項

Oracle Fusion Middlewareでの認証モード

このトピックでは、Oracle Fusion Middlewareにおけるクライアントとサーバー間でサポートされている様々な認証モードについて説明します。

サポートされている認証モードは、次のとおりです。

  • 認証なしモードでは、サーバーもクライアントも認証は不要です。

    このモードは、匿名SSL/認証なし/Diffie-Hellmanなどと呼ばれています。このモードはセキュアではないと見なされます。

  • サーバー認証モードでは、クライアントに対してサーバー自身の認証が行われます。

    このモードは、一方向SSL/サーバー認証とも呼ばれています。

  • 相互認証モードでは、サーバーに対してクライアント自身の認証が行われ、クライアントに対してサーバー自身の認証が行われます。

    このモードは、双方向SSL/クライアント認証とも呼ばれています。

  • オプションのクライアント認証モードでは、クライアントに対してサーバー自身の認証が行われますが、サーバーに対してはクライアント自身の認証を行うことも行わないこともできます。クライアント自身の認証を行わなくても、SSLセッションは機能します。

SSL構成用ツール

Oracle Fusion Middlewareでは、一般的なツールと拡張ツールの2種類の構成ツールを使用します。

一般的なツール

  • Fusion Middleware Control

  • WLSTコマンドライン・インタフェース

  • Oracle WebLogic Server管理コンソール

  • keytoolコマンドライン・ツール

これらのツールを使用して、Oracle Fusion Middlewareの任意のリスナーまたはコンポーネントでSSLを構成したり、Oracle WalletやJKSキーストアを管理できます。

このリストの最初の3つのツールは、コンポーネントがアプリケーション・サーバー・ドメインに関連付けられている場合(コンポーネントがスタンドアロン・インストールではない場合)に使用できます。

拡張ツール

orapkiコマンド行ツールは、特定のスタンドアロン・インストールでウォレットを管理するために必要です。

関連項目:

キーストアの管理は、「Oracle Fusion Middlewareでのキーおよび証明書の保存」を参照してください。

構成ツールでのSSLの構成

Oracle Fusion Middleware構成ではいくつかのツールを使用できます。このようなツールは、SSL対応のOracle WebLogic Serverに接続できるようにSSLを指定して構成する必要があります。

関連項目:

Oracle WebLogic ServerでのインバウンドSSLの有効化の詳細は、「Oracle WebLogic ServerへのインバウンドSSLの構成」を参照してください。

すべての構成ツールの一覧は、「SSL構成用ツール」を参照してください。

この項の内容は次のとおりです。

Oracle Enterprise Manager Fusion Middleware Control。

次のステップに従って、Oracle Fusion Middleware ControlまたはEnterprise Managerを起動します。

  1. Fusion Middleware ControlがデプロイされているOracle WebLogic ServerインスタンスでSSLポートが有効なことを確認し、(Fusion Middleware Controlを起動する)ブラウザがサーバー証明書を信頼していることを確認します。

    詳細は、『Fusion Middleware ControlによるOracle WebLogic Serverの管理』サーバーのSSL設定の構成に関する項を参照してください。

  2. ここで、「https://host:port」形式でSSLベースのURLを使用してFusion Middleware Controlを起動します。

Oracle WebLogic Server管理コンソール

次のステップに従って、Oracle WebLogic Server管理コンソールを起動します。

Oracle WebLogic ServerインスタンスでSSLポートが有効なことを確認します。ここで、URLにSSLポートを指定して管理コンソールを起動します。証明書が信頼できないという警告が表示される場合がありますが、この証明書を受け入れて続行します。

詳細は、『Fusion Middleware ControlによるOracle WebLogic Serverの管理』サーバーのSSL設定の構成に関する項を参照してください。

WLSTコマンド行ツール

次のステップに従って、SSLを構成するためにWLSTを起動します。

  1. WLSTシェルを起動します。
  2. WLSTコマンドを実行します。
    help('connect')
    

ヘルプ・テキストの説明にある手順に従って、SSLモードでWLSTシェルを設定します。

関連項目:

WLSTの使用の詳細は、「SSL関連のWLSTリファレンス」を参照してください。

orapkiユーティリティ

orapkiは、ウォレットを構成するための推奨ツールです。

詳細は、「orapki」参照してください。

Web層でのSSLの構成

Oracle HTTP Serverは、Oracle Fusion MiddlewareのWeb層に存在します。SSLプロトコルを使用して通信を保護します。

ノート:

  • この項の内容は、Oracle WebLogic Serverドメインに関連したWeb層に適用されます。

  • これらの項目の表示順は、SSLが有効化される順序ではありません(この順序はトポロジによって異なります)。これらの項目は、フロントエンドのコンポーネントから開始するように配置されています。

この章は、すべてのOracle HTTP Server構成オプションについて説明しているわけではありません。その他のシナリオについては、『Oracle HTTP Serverのインストールと構成』WebLogic ServerドメインにおけるOHSに関する項およびスタンドアロン・ドメインにおけるOHSに関する項を参照してください。

この項では、Web層に存在するOracle HTTP Server用のSSLについて説明しますが、各項目は次のとおりです。

ロード・バランサの構成

ロード・バランシング・デバイスに固有の手順を使用して、Oracle Fusion Middleware環境のロード・バランサを構成します。

Oracle HTTP Server仮想ホストでのSSLの有効化

Oracle WebLogic Server環境で動作しているOracle HTTP Server仮想ホストのSSL構成の管理方法について説明します。

ノート:

スタンドアロン・モードのOracle HTTP Serverについては、『Oracle HTTP Serverの管理』スタンドアロン・モードでのセキュア・ソケット・レイヤーの構成に関する項を参照してください。

アウトバンド・トラフィックの場合は、「Oracle HTTP Serverからのアウトバウンド・リクエストでのSSLの有効化」(Fusion Middleware ControlまたはWLSTのいずれかを使用)を参照してください。

Fusion Middleware Controlを使用したOracle HTTP Server仮想ホストへのインバウンド・リクエストでのSSLの有効化

次のステップを実行して、Oracle HTTP Server仮想ホストへのインバウンド・トラフィックでSSLを有効にすることができます。

  1. 左側のナビゲーション・ペインでOracle HTTP Serverインスタンスを選択します。
  2. 必要に応じて、「Oracle HTTP Server」「セキュリティ」「ウォレット」にナビゲートします。

    ウォレットの作成とメンテナンスについては、「キーストア、ウォレットおよび証明書の管理」を参照してください。

  3. 「HTTP Server」「管理」「仮想ホスト」にナビゲートします。

    このページには、現在構成されているホスト、およびそれらがhttpまたはhttpsに構成されているかが表示されます。

  4. 更新する仮想ホストを選択して、「構成」「SSL構成」をクリックします。(ノート: 新規仮想ホストを作成する場合は、『Oracle HTTP Serverの管理』接続の管理に関する項を参照してください。)

    「SSL構成」ページが表示されます。

  5. 「SSLの有効化」の選択を解除すると、httpsポートをhttpポートに変換できます。

    現在httpを使用している仮想ホストでSSLを構成するには:

    • 「SSLの有効化」ボックスを選択します。

    • ドロップダウン・リストからウォレットを選択します。

    • 「サーバーSSLプロパティ」から、SSL認証タイプ、使用する暗号スイートおよびSSLプロトコル・バージョンを選択します。

      ノート:

      ほとんどの状況ではデフォルト値が最適です。

      ノート:

      • ここでは、Fusion Middleware Controlで証明書が使用可能であることを前提としています。orapkiを使用して作成した場合は、『Oracle Platform Security Servicesによるアプリケーションの保護』キーストアのインポートに関する項に従って、先にインポートする必要があります。

      • 選択した認証タイプにより使用可能な暗号スイートが決まり、選択した暗号スイートにより使用可能なプロトコル・バージョンが決まります。暗号およびプロトコルのバージョンの詳細は、『インフラストラクチャ・セキュリティWLSTコマンド・リファレンス』SSL用のプロパティ・ファイルに関する項を参照してください。

  6. 「OK」をクリックして変更を保存します。
  7. Windowsプラットフォームの場合にのみ、Windowsエクスプローラを開いて、cwallet.ssoファイルの場所に移動します。「プロパティ」→「セキュリティ」で、「グループ名またはユーザー名」にSYSTEMを追加します。
  8. 「Oracle HTTP Server」「コントロール」「再起動」 にナビゲートして、Oracle HTTP Serverインスタンスを再起動します。
  9. ブラウザ・セッションを開き、SSLを有効にしたポート番号に接続します。
WLSTを使用したOracle HTTP Server仮想ホストへのインバウンド・リクエストでのSSLの有効化

「コマンド行インタフェースの起動方法」の説明に従い、プロトコルを使用してこれらのWLSTコマンドを実行します。

次のステップを実行します。

  1. 次のコマンドを実行して、このOracle HTTP Serverインスタンスの仮想ホストを確認します。
    listListeners('OHS_instance','OHS_instance' )
    

    このコマンドは、このインスタンスのすべての仮想ホストをリストします。SSLを構成する必要がある仮想ホストを1つ選択します。たとえば、「vhost1」を選択できます。このコマンドの詳細は、『WebLogic Server WLSTコマンド・リファレンス』を参照してください。

  2. SSLプロパティで仮想ホストを構成します。
    configureSSL('OHS_instance',
       'OHS_instance',
       'ohs',
       'vhost1')

    ノート:

  3. Windowsプラットフォームの場合にのみ、Windowsエクスプローラを開いて、cwallet.ssoファイルの場所に移動します。「プロパティ」→「セキュリティ」で、「グループ名またはユーザー名」にSYSTEMを追加します。
Oracle HTTP Serverからのアウトバウンド・リクエストでのSSLの有効化

mod_wl_ohsを構成してOracle HTTP Serverからのアウトバウンド・リクエストでのSSLを有効化します。

一方向SSLの有効化

ステップは次のとおりです。

  1. 証明書を格納してOracle WebLogic Serverのカスタム・キーストアを生成します(「Oracle WebLogic ServerでのSSLの構成」を参照してください)。
  2. Oracle WebLogic Serverで使用される信頼できるCA証明書を、Oracle HTTP Serverウォレットに信頼できる証明書としてインポートします。このタスクには、WLSTやFusion Middleware Controlなどの使用可能なユーティリティを使用できます。(ノート: ここで説明するウォレットは、Oracle HTTP Serverリスニング・ポートがSSL用に使用するウォレットです。Oracle WebLogic Server証明書に署名した信頼性できる(ルート) CA証明書は、このウォレットに存在する必要があります。信頼できる証明書のインポートの詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』Fusion Middleware Controlを使用した証明書のインポートに関する項を参照してください。)
  3. Oracle WebLogic Serverインスタンスを停止し、Oracle HTTP Server構成ファイル(DOMAIN_HOME/config/fmwconfig/components/OHS/instance_name/ssl.conf)を編集して、mod_weblogicの下のSSL構成に次の行を追加します。
    WlSSLWallet  "$(DOMAIN_HOME}/config/fmwconfig/components/COMPONENT_TYPE/COMPONENT_NAME/keystores/default"
    

    このdefaultは、ステップ2のOracle HTTP Serverウォレットの名前です。

    次にその構成の例を示します。

    <IfModule mod_weblogic.c>
    WebLogicHost myweblogic.server.com
    WebLogicPort 7002
    MatchExpression *.jsp
    SecureProxy On
    WlSSLWallet "$(DOMAIN_HOME}/config/fmwconfig/components/OHS/ohs1/keystores/default"
    </IfModule>
    

    ファイルを保存して終了します。

  4. Windowsプラットフォームの場合にのみ、Windowsエクスプローラを開いて、cwallet.ssoファイルの場所に移動します。「プロパティ」→「セキュリティ」で、「グループ名またはユーザー名」にSYSTEMを追加します。
  5. Oracle HTTP Serverを再起動して変更を有効にします。『Oracle HTTP Serverの管理』Oracle HTTP Serverインスタンスの再起動に関する項を参照してください。
  6. ステップ1で生成したカスタム・キーストアを使用するようにOracle WebLogic Serverインスタンスが構成されていて、別名が証明書の生成で使用した別名値を指していることを確認します。Oracle WebLogic Serverインスタンスを再起動します。詳細は、「Oracle WebLogic ServerへのインバウンドSSLの構成」を参照してください。
双方向SSLの有効化

mod_wl_ohsでは、双方向SSL通信もサポートします。双方向SSLを構成するには:

  1. 前の一方向SSLのステップ1から4を実行します。
  2. Oracle WebLogic Serverのトラスト・ストアtrust.jksを生成します。

    (前の手順のステップ1で)一方向SSL用に作成されたキーストアは、信頼できる証明書を保存するために使用できますが、この手順で個別のトラストストアを作成することをお薦めします。

  3. Oracle HTTP Serverウォレットからユーザー証明書をエクスポートして、それをステップ2で作成したトラストストアにインポートします。

    エクスポートには、WLSTやFusion Middleware Controlなどの使用可能なユーティリティを使用できます。インポートにはkeytoolユーティリティを使用できます。詳細は、「証明書のライフサイクルの管理」を参照してください。

  4. Oracle WebLogic Server管理コンソールから、構成するサーバーの「キーストア」タブを選択します。
  5. ステップ2で作成したトラストストアのtrust.jksファイルの場所によりカスタム・トラストストアを設定します(完全な名前を使用します)。
  6. キーストア・タイプをJKSに設定し、キーストアの作成に使用されるパスフレーズを設定します。
  7. 「SSL」タブで、「信頼性のある認証局」が「カスタム信頼キーストアから」に設定されていることを確認します。
  8. Oracle WebLogic Serverが双方向SSL用に構成されていることを確認します。詳細は、『Oracle WebLogic Serverセキュリティの管理』のSSLの構成に関する項を参照してください。

中間層でのSSLの構成

Oracle Fusion Middlewareの中間層のSSLでは、アプリケーション・サーバーの他、アプリケーション・サーバーで稼働するコンポーネントおよびアプリケーションに対してもSSLを有効にします。

中間層では、次のようにSSLを使用します。

  • アプリケーション・サーバーでのSSLの有効化

  • アプリケーション・サーバー上で稼働するコンポーネントおよびアプリケーションでのSSLの有効化

この項では、中間層でのSSLの構成について説明します。この項の項目は次のとおりです。

Oracle WebLogic ServerでのSSLの構成

次の手順に従って、アプリケーション・サーバーを構成します。

Oracle WebLogic ServerへのインバウンドSSLの構成

SSLを実装してOracle WebLogic Serverを保護する方法の詳細は、『Oracle WebLogic Serverセキュリティの管理』の次のトピックを参照してください。

Oracle WebLogic ServerからのアウトバウンドSSLの構成

この項では、Oracle WebLogic Serverからのアウトバウンド接続でSSLを有効にする方法について説明します。

Oracle Platform Security ServicesからLDAPへのアウトバウンドSSLの構成

この項では、LDAPディレクトリへのポリシー・ストア接続および資格証明ストア接続用にSSLを構成する方法について説明します(サーバー側とクライアント側が必要)。匿名SSLおよび一方向SSLがサポートされています。

この項で参照されるjps-config.xmlファイルの詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』を参照してください。

匿名SSL (サーバー側)

匿名認証モードでLDAPサーバーを起動します。

このタスクの詳細は、LDAPサーバーのドキュメントを参照してください。

匿名SSL (クライアント側)

jps-config.xmlファイルでは、プロトコルをldapsに設定し、プロパティldap.urlに適切なポートを指定する必要があります。この情報は、ポリシー・ストア、資格証明ストア、キーストア、およびldap.urlを使用するその他のサービスに対して更新する必要があります。

一方向SSL (クライアント側)

クライアント側の構成が次のようになっている必要があります。

  1. LDAPの証明書を信頼するには、使用するトラスト・ストアを検索する場所をJVMが認識している必要があります。これを行うには、次のように設定します。
    -Djavax.net.ssl.trustStore=path_to_jks_file
    

    このプロパティは、JavaSEプログラム、またはJavaEE環境のサーバー起動プロパティに追加されます。

  2. jps-config.xmlファイルでは、プロトコルをldapsに設定し、プロパティldap.urlに適切なポートを指定する必要があります。この情報は、ポリシー・ストア、資格証明ストア、キーストア、およびldap.urlを使用するその他のサービスに対して更新する必要があります。
  3. keytoolを使用して、LDAPサーバーの証明書をステップ1で指定したトラスト・ストアにインポートします。
Oracle Platform Security ServicesからOracle DatabaseへのアウトバウンドSSLの構成

一方向または双方向のSSL接続をデータベース・ベースのOPSSセキュリティ・ストアに設定できます。

データベース・サーバーおよびデータベース・クライアントの構成の詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』データベース・セキュリティ・ストアへのSSL接続の設定に関する項を参照してください。

LDAPオーセンティケータからLDAPへのアウトバウンドSSLの構成

LDAPディレクトリへのアウトバウンドSSLの詳細は、『Oracle WebLogic Serverセキュリティの管理』WebLogic ServerでのSSL証明書の検証方法に関する項を参照してください。

データベースへのアウトバウンドSSLの構成

データベース・リスナー用SSLの構成の詳細は、Oracle Database Advanced Security管理者ガイドSecure Sockets Layer認証の構成を参照してください。

アプリケーションのクライアント側のSSL

クライアント側でアプリケーションに対してSSLを有効にする方法について説明します。

SSLを有効にしたアプリケーションの作成方法の詳細は、『WebLogicセキュリティ・サービスによるアプリケーションの開発』JavaクライアントでのSSL認証の使用に関する項を参照してください。

ベスト・プラクティスについては、「アプリケーション開発者のベスト・プラクティス」を参照してください。

データ層でのSSLの構成

Oracle Fusion Middlewareのデータ層には、Oracle Databaseがコンポーネントとして格納されます。データ層にあるコンポーネントはすべてSSLを有効にする必要があります。

データベースでのSSLの構成

次の手順に従って、Oracle DatabaseおよびOracle WebLogic Server上のデータ・ソースでSSLを有効にします。

Oracle DatabaseでのSSLの有効化

次のステップを実行して、OracleデータベースでSSLを有効にします。

  1. ルートCAとDBの証明書を作成します。次はその例です。

    ノート:

    本番で使用する場合、自己署名証明書はお薦めしません。本番ウォレットの取得の詳細は、「自己署名付きウォレットのサード・パーティのウォレットへの変更」を参照してください。

    mkdir root
    mkdir server
     
    # Create root wallet, add self-signed certificate and export
    orapki wallet create -wallet ./root -pwd password
    orapki wallet add -wallet ./root -dn CN=root_test,C=US -keysize 2048 -self_signed -validity 3650 -pwd password
    orapki wallet display -wallet ./root -pwd password
    orapki wallet export -wallet ./root -dn CN=root_test,C=US -cert ./root/b64certificate.txt -pwd password
     
    #Create server wallet, add self-signed certificate and export
    orapki wallet create -wallet ./server -pwd password
    orapki wallet add -wallet ./server -dn CN=server_test,C=US -keysize 2048 -pwd password
    orapki wallet display -wallet ./server -pwd password
    orapki wallet export -wallet ./server -dn CN=server_test,C=US -request ./server/creq.txt -pwd password
     
    # Import trusted certificates
    orapki cert create -wallet ./root -request ./server/creq.txt -cert ./server/cert.txt -validity 3650 -pwd password
    orapki cert display -cert ./server/cert.txt -complete
    orapki wallet add -wallet ./server -trusted_cert -cert ./root/b64certificate.txt -pwd password
    orapki wallet add -wallet ./server -user_cert -cert ./server/cert.txt -pwd password
    orapki wallet create -wallet ./server -auto_login -pwd password}}
    
  2. データベースのlistener.orasqlnet.oraおよびtnsnames.oraを更新します。

    1. 次の例は、デフォルトのlistener.oraを示します。

      SID_LIST_LISTENER =
      (SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = /path_to_O_H)(PROGRAM = extproc)))
      LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = mynode.mycorp.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCPS)(HOST = mynode.mycorp.com)(PORT = 2490))
      ))
       
      WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/wallet_location)))
       
      SSL_CLIENT_AUTHENTICATION=FALSE}}
      

      次に、更新されたlistener.oraファイルを示します。このシナリオではクライアント認証なしに指定しています。

      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (GLOBAL_DBNAME = dbname)
            (ORACLE_HOME = /path_to_O_H)
            (SID_NAME = sid)
          )
        )
       
      SSL_CLIENT_AUTHENTICATION = FALSE
       
      WALLET_LOCATION =
        (SOURCE =
          (METHOD = FILE)
          (METHOD_DATA =
            (DIRECTORY = /wallet_path)
          )
        )
       
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = mynode.mycorp.com)(PORT = 1521))
          )
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCPS)(HOST = mycorp.com)(PORT = 2490))
          )
        )
      

      SSLポートが追加されています。

    2. 同様に、変更されたsqlnet.oraファイルは次のようになります。

      NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
      SQLNET.AUTHENTICATION_SERVICES=(BEQ,TCPS,NTS)
      WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/directory)))
      SSL_CLIENT_AUTHENTICATION=FALSE
      
    3. 変更されたtnsnames.oraファイルは次のようになります。

      OID =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = mynode.mycorp.com)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = mynode.mycorp.com)
          )
        )
         
      SSL =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCPS)(HOST = mynode.mycorp.com)(PORT = 2490))
          )
          (CONNECT_DATA =
            (SERVICE_NAME = mynode.mycorp.com)
            or
            (SID = mynode.mycorp.com)
          )
          (SECURITY=(SSL_SERVER_CERT_DN=\"CN=server_test,C=US\"))
        )
      
  3. 新しい接続文字列を使用してデータベースへの接続をテストします。たとえば:

    $ tnsping ssl
    $ sqlplus username/password@ssl

関連項目:

Oracle Database Advanced Security管理者ガイドSecure Sockets Layer認証の構成の章。

データ・ソースでのSSLの有効化

次のステップを実行して、SSLを使用するようにOracle WebLogic Server上のデータ・ソースを構成します。

  1. トラストストアを作成して、(データベースでSSLを有効にしたときに作成した)ルート証明書を、信頼できる証明書としてトラストストアに追加します。
  2. Oracle WebLogic Server管理コンソールで、使用しているデータ・ソースの「接続プール」タブにナビゲートします。

    ノート:

    Oracle WebCenter Portalデータ・ソースなどの既存ソースや新しいデータ・ソースをデータ・ソースにできます。詳細は、『Oracle WebLogic Server JDBCデータ・ソースの管理』JDBCデータ・ソースの作成に関する項を参照してください。

    「JDBCプロパティ」テキスト・ボックスで指定する必要があるプロパティは、構成する認証のタイプにより異なります。

    • クライアント認証(双方向認証)が必要な場合:

      javax.net.ssl.keyStore=..(password of the keystore)
             javax.net.ssl.keyStoreType=JKS
             javax.net.ssl.keyStorePassword=...(password of the keystore)
             javax.net.ssl.trustStore=...(the truststore location on the disk)
             javax.net.ssl.trustStoreType=JKS
             javax.net.ssl.trustStorePassword=...(password of the truststore)
      
    • クライアント認証が不要な場合:

      javax.net.ssl.trustStore=...(the truststore location on the disk)
             javax.net.ssl.trustStoreType=JKS
             javax.net.ssl.trustStorePassword=...(password of the truststore)
      
  3. 「URL」テキスト・ボックスにJDBC接続文字列を入力します。プロトコルがTCPSで、SSL_SERVER_CERT_DNにデータベース証明書の完全なDNが含まれていることを確認します。

    tnsnames.oraが「SERVICE_NAME」を使用する場合は、次の構文を使用します。

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=host-name)(PORT=port-number)))(CONNECT_DATA=(SERVICE_NAME=service))(SECURITY=(SSL_SERVER_CERT_DN="CN=server_test,C=US")))
    

    tnsnames.oraが「SID」を使用する場合は、次の構文を使用します。

    jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=host-name)(PORT=port-number)))(CONNECT_DATA=(SID=service))(SECURITY=(SSL_SERVER_CERT_DN="CN=server_test,C=US")))
    
  4. 接続をテストおよび検証します。この時点で、データ・ソースはSSLを使用するように構成されています。

LDAPセキュリティ・ストアへの一方向SSLの設定

次のステップに従って、Oracle WebLogic ServerまたはJava SEアプリケーションとLDAPセキュリティ・ストア間に一方向Secure Sockets Layer (SSL)チャネルを設定します。このような接続は、たとえばLDAPターゲット・ストアへの再関連付けの際に必要になります。

LDAPの構成

一方向SSLでLDAPを構成する方法の詳細は、『Oracle Internet Directory管理者ガイド』Oracle Internet DirectoryリスナーでのSSLの有効化に関する説明を参照してください。

LDAP認証局の作成

WebLogic ServerでLDAP認証局を認識できない場合、orapkiを使用して証明書を作成します。

orapki wallet export -wallet CA -dn "CN=myCA" -cert serverTrust.cert

このコマンドでは、—certで指定されたファイルにウォレットから証明書をエクスポートします。

SSLを構成する前に、次のことに注意してください。

  • 次の手順は、SSLのタイプがserver-authおよびmutual-authである場合に必要で、no-authの場合には不要です。

  • 次の手順で指定するフラグを複数のアプリケーションが実行される環境で使用する場合は、それらのアプリケーションで同じトラストストアを使用する必要があります。

Java EEアプリケーション用の設定

次の手順のいずれかを使用して、サーバーとアイデンティティ・ストアの間に一方向SSL接続を設定します。アイデンティティ・ストア・サービスとセキュリティ・ストア・サービスでは、異なるソケット・ファクトリを使用するため、次の手順が異なります。

サーバーとアイデンティティ・ストア間で一方向SSL接続を確立するには、次の手順を実行します(信頼できる認証局(CA)がある場合は、エクスポートされていることを前提とします)。

  1. WebLogic ServerでCAを認識できる場合、このステップをスキップします。

    認識できない場合は、次の例(ここではmyKeys.jksファイルを生成してserverTrust.certファイルをインポート)に示すように、keytoolを使用してLDAP CAをトラストストアにインポートします。

    >keytool -import -v -trustcacerts -alias trust -file serverTrust.cert -keystore myKeys.jks -storepass keyStorePassword
  2. サーバーを起動するstartWebLogic.shスクリプトを変更して次のような行を挿入した後、スクリプトを実行します。

    -Djavax.net.ssl.trustStore=<absolute path name to file myKeys.jks>

サーバーとセキュリティ・ストア間で一方向SSL接続を確立するには、次の手順を実行します(信頼できるCAがある場合は、エクスポートされていることを前提とします)。

  1. keytoolを使用して、信頼できるCAをトラストストアにインポートします。

    >keytool -import -v -trustcacerts -alias trust -file serverTrust.cert -keystore myKeys.jks -storepass keyStorePassword
  2. サーバーを起動するstartWebLogic.shスクリプトを変更して次のような行を挿入した後、スクリプトを実行します。

    -Dweblogic.security.SSL.trustedCAKeyStore=<absolute path name to file myKeys.jks>
  3. LDAPサーバーのSSL証明書でワイルド・カードを使用する場合は、WebLogic Serverを起動するスクリプトに次の行を追加します。

    -Dweblogic.security.SSL.ignoreHostnameVerification=true
  4. サーバーを再起動します。

Java SEアプリケーション用の設定

  1. WebLogic ServerでCAを認識できる場合、このステップをスキップします。

    認識できない場合は、次の例(ここではmyKeys.jksファイルを生成してserverTrust.certファイルをインポート)に示すように、keytoolを使用してLDAP CAをトラストストアにインポートします。

    >keytool -import -v -trustcacerts -alias trust -file serverTrust.cert -keystore myKeys.jks -storepass keyStorePasswodr
  2. Java仮想マシン(JVM)を起動するスクリプトを変更して次のような行を挿入します。

    -Djavax.net.ssl.trustStore=<absolute path name to file myKeys.jks>
  3. サーバーを再起動します。

アイデンティティ・ストア・サービスでのSSLの設定

libOVDおよびJKSを使用してアイデンティティ・ストア・サービスでSSL接続を確立するには、WebLogic Serverトラストストアやadapters.jksファイルなど、複数の場所に格納されているキーストア証明書が必要です。

libOVDおよびJKSを使用したアイデンティティ・ストア・サービスでの一方向SSLの設定

次のステップに従って、libOVDおよびJKSを使用してアイデンティティ・ストア・サービスで一方向SSLを確立します。

  1. サービスが使用するLDAPサーバー証明書を格納するためのキーストアを作成します。Oracle WebLogic Server管理コンソールとキーストアのそれぞれについてパスワードを指定する必要があります。libovdconfig.shを実行する前に、ORACLE_HOMEoracle_commonに設定します。

    createKeystoreオプションを指定してMW_HOME/oracle_common/bin/libovdconfig.shを実行し、キーストアを作成するには:

    libovdconfig.sh -host wls_host -port wls_adminserver_port -userName wls_user_name -domainPath full_path_domain_home -createKeystore

    これらの意味は、次のとおりです。

    • hostは、サーバー・ホストです。

    • portは、WebLogic管理サーバーのポートです。

    • usernameは管理者ユーザー名です。

    • domainPathはドメイン・ホームへの完全パスです。

  2. LDAPエクスポート・ユーティリティを使用して、LDAPディレクトリからストア証明書をエクスポートします。
  3. keytoolコマンドを使用して、作成したキーストアに証明書をインポートします。
    $JAVA_HOME/bin/keytool -importcert 
    -keystore $DOMAIN_HOME/config/fmwconfig/ovd/default/keystores/adapters.jks 
    -storepass keystore_password_used_in_libovdconfig.sh 
    -alias alias_name 
    -file full_path_to_LDAPCert_file 
    -noprompt
  4. WebLogic Serverを再起動します。

libOVDおよびJKSを使用したアイデンティティ・ストア・サービスでの双方向SSLの設定

次のステップに従って、libOVDおよびJKSを使用してアイデンティティ・ストア・サービスで双方向SSLを確立します。

  1. 「libOVDおよびJKSを使用したアイデンティティ・ストア・サービスでの一方向SSLの設定」で説明されている手順を実行します。
  2. 作成したキーストアで、新しい署名証明書を生成します。
  3. この証明書をファイルにエクスポートします。
  4. LDAPディレクトリに証明書をインポートします。

SSLの高度なシナリオ

Oracle Fusion MiddlewareのSSL構成には、FIPS 140サポート、ハードウェア・セキュリティ・モジュール、証明書検証など、基本的なトポロジを超えた高度なシナリオが他にもあります。

ハードウェア・セキュリティ・モジュールとアクセラレータ

ハードウェア・セキュリティ・モジュール(HSM)は、コンピュータに組み込むことができる物理的なプラグイン・カードまたは外部セキュリティ・デバイスで、セキュアなストレージ環境を提供し機密コンテンツを扱うことができます。

ノート:

この項の内容は、HSMをサポートしているシステム・コンポーネントであるOracle HTTP Serverにのみ適用されます。

Oracle Fusion Middlewareでは、PKCS#11に準拠したHSMデバイスをサポートし、秘密キーに対してセキュアなストレージ環境を提供します。

次のステップを実行し、PKCS#11ウォレットを使用してコンポーネントでSSLを実装します。

  1. コンポーネントが稼働しているマシンにHSMライブラリをインストールします。これは、1回かぎりのタスクでデバイスに依存します。

  2. 次に、orapkiコマンド行ツールを使用してウォレットを作成します。次の点に注意してください。

    1. ウォレット・タイプとしてPKCS11を選択します。

    2. デバイスとの通信に使用されるデバイス固有のPKCS#11ライブラリを指定します。このライブラリは、HSMソフトウェアの一部です。

      Linuxでは、ライブラリは次の場所にあります。

      For LunaSA (Safenet):  /usr/lunasa/lib/libCryptoki2.so
      For nCipher:  /opt/nfast/toolkits/pkcs11/libcknfast.so
      

      Windowsでは、ライブラリは次の場所にあります。

      For LunaSA (Safenet): C:\Program Files\LunaSA\cryptoki.dll
      
  3. ここで、第三者の証明書を取得するための標準的な手順を実行します。証明書リクエストを作成し、認証局(CA)で承認されたリクエストを取得して、そのCAで署名された証明書をインストールします。

    設定したウォレットは、他のウォレットと同様に使用されます。

  4. orapkiユーティリティでウォレットを確認します。次のコマンド構文を使用します。

    orapki wallet p11_verify [-wallet [wallet]] [-pwd password]

    関連項目:

    orapkiの詳細は、「orapki」を参照してください。

  5. configureSSL WLSTコマンドを使用して、コンポーネントのリスナーでSSLを構成します。このコマンドは入力にプロパティ・ファイルを指定します。プロパティ・ファイルでは、コンポーネントが稼働しているマシンのPKCS#11ウォレット・ディレクトリのフルパスを指定する必要があります。(ノート: PKCS#11ウォレットをインスタンス・ホーム・ディレクトリに保存しないでください。Fusion Middleware ControlまたはWLSTを介して作成および管理されるウォレットのみがインスタンス・ホームに存在する必要があります。)

    サンプルのプロパティ・ファイルは、次のようになります。

    SSLEnabled=true
    AuthenticationType=Server
    PKCS11Wallet=/tmp/lunasa/wallet 

ノート:

WLSTコマンドのconfigureSSLを使用して、PKCS11ウォレットを構成する必要があります。Fusion Middleware Controlまたはその他のツールを使用してこのタスクを実行することはできません。

CRLとSSLとの統合

CRLベースの検証を使用するようにコンポーネントを構成する方法と、ファイル・システムにCRLを作成および設定する方法について説明します。

ノート:

  • この項の内容は、Oracle WebLogic Server環境におけるOracle HTTP Serverにのみ適用されます。スタンドアロン・コンポーネントのSSL構成の詳細は、『Oracle HTTP Serverの管理』を参照してください。

  • CRL検証はWLSTを使用して管理します。このタスクはFusion Middleware Controlを使用して実行することができません。

SSLを使用するコンポーネントは、オプションで証明書失効リスト(CRL)を使用した証明書の検証を有効にできます。これによりそのコンポーネントでは、SSLハンドシェイクでピア証明書を検証して、認証局(CA)で発行された失効済証明書のリストにそれがないか確認できます。

コンポーネントのCRL検証の構成

configureSSL WLSTコマンドを使用して、コンポーネントのリスナーでSSLを構成します。このコマンドは入力にプロパティ・ファイルを指定します。

プロパティ・ファイルは、次のように設定する必要があります。

  1. 「CertValidation」属性はurlに設定する必要があります。
  2. 「CertValidationPath」属性は、「file://file_path」または「dir://directory_path」という形式にする必要があります。
    • 証明書の検証に単一のCRLファイルを使用している場合、最初の形式を使用します。このCRLファイルは、すべてのCRLファイルを結合する必要があります。

    • 複数のCRLファイルがハッシュ形式で格納されているディレクトリ・パスを指定する場合、2番目の形式を使用します。

      ハッシュ形式でCRLを作成する方法については、「ファイル・システムでのCRLの管理」を参照してください。

次の例では、プロパティ・ファイルは単一のCRLファイルを指定します。

SSLEnabled=true
AuthenticationType=Server
CertValidation=crl
KeyStore=ohs1 
CertValidationPath=file:///tmp/file.crl

次の例では、プロパティ・ファイルは複数のCRLファイルへのディレクトリ・パスを指定しています。

SSLEnabled=true
AuthenticationType=Server
KeyStore=ohs1 
CertValidation=crl
CertValidationPath=dir:///tmp
ファイル・システムでのCRLの管理

ノート:

LDAPベースのCRLまたはCRL配布ポイントはサポートされません。

orapkiコマンド行ツールを使用して、ファイル・システム上でCRLを管理します。このトピックの詳細は、「orapkiユーティリティを使用した証明書失効リストの管理」を参照してください。

ハッシュ形式へのCRLの名前変更

CRL格納場所を指定する場合は、CRLの名前を変更する必要があります。これにより、実行時に効率的にCRLをロードできます。この操作では、実際のCRLファイルへのシンボリック・リンクを作成します。Windowsでは、新しい名前を付けたファイルにCRLをコピーします。

CRLの名前を変更するには:

orapki crl hash 
[-crl [url|filename]] [-wallet wallet] [-symlink directory] 
[-copy directory] [-summary] [-pwd password]

たとえば:

orapki crl hash -crl nzcrl.txt -symlink wltdir -pwd password

CRLファイル名を実行時に指定すると、複数のCRLをそのファイルに結合できます。この例で作成されるCRLはBase64形式なので、テキスト・エディタを使用してCRLを結合できます。

CRLの作成

ノート:

CRLの作成および証明書の失効はテスト目的で行い、必ず自己署名証明書とともに使用します。本番で使用する場合、本番の証明書を有名なCAから取得して、CRLをそれらの認証局から取得します。

CRLを作成するには:

orapki crl create 
[-crl [url|filename]] [-wallet [cawallet]] [-nextupdate [days]] [-pwd password]

たとえば:

orapki crl create 
-crl nzcrl.crl -wallet rootwlt -nextupdate 3650 -pwd password

証明書の失効

証明書が失効すると、証明書のシリアル番号がCRLに追加されます。

証明書を失効させるには:

orapki crl revoke 
[-crl [url|filename]] [-wallet [cawallet]] [-cert   [revokecert]] [-pwd password]

たとえば:

orapki crl revoke 
-crl nzcrl.txt -wallet rootwlt -cert cert.txt -pwd password
CRL検証が構成されたコンポーネントのテスト

コンポーネントでCRL検証が正しく構成されていることをテストするには、次のステップを実行します。

  1. コンポーネントで使用される証明書をウォレットに設定します。
  2. この証明書を含むCRLを失効済証明書リストの中に生成します。「ファイル・システムでのCRLの管理」で説明されているステップを実行します。
  3. このCRLを使用するようにコンポーネントを構成します。「コンポーネントのCRL検証の構成」で説明されているステップを実行します。
  4. この失効済証明書を使用すると、SSLハンドシェイクは失敗します。

Oracle Fusion MiddlewareのFIPS 140-2の設定

このトピックでは、Oracle Fusion Middlewareの様々なコンポーネント間でのFIPS 140–2の設定について説明します。

Oracle Fusion MiddlewareでのFIPS 140のサポートの詳細は、「Oracle Fusion MiddlewareでのFIPS 140のサポート」を参照してください。

SSLのベスト・プラクティス

Oracle Fusion Middlewareでは、コンポーネント管理者およびアプリケーション開発者向けにSSL構成時のベスト・プラクティスがいくつか推奨されています。

管理者のベスト・プラクティス

システム管理に成功するには、次のベスト・プラクティスに従う必要があります。

  • 自己署名付きウォレットはテスト環境でのみ使用します。本番環境に移行する前にウォレットにCAで署名された証明書を取得する必要があります。詳細は、「キーストア、ウォレットおよび証明書の管理」を参照してください。

  • (少なくともWeb層の)コンポーネントでは、DNとしてシステム・ホスト名あるいは仮想ホストまたはサイト名を持つ証明書を使用することをお薦めします。そうすることにより、混乱させる警告メッセージが表示されることなく、ブラウザはSSLモードで接続できます。

  • SSLで使用される証明書では、最小キー・サイズの1024ビットを使用することをお薦めします。キー・サイズを大きくすると、セキュリティは高くなりますが、パフォーマンスが低下します。セキュリティおよびパフォーマンス要件に応じて、適切なキー・サイズ値を選択します。

  • SSLハンドシェイクが失敗する主な原因の1つに信頼性が欠落していることがあります。SSLハンドシェイクを開始する前に、(サーバーCA証明書をクライアント・キーストアにインポートして)クライアントがサーバーを信頼していることを確認してください。クライアント認証も必要な場合は、その逆も確認する必要があります。

アプリケーション開発者のベスト・プラクティス

アプリケーション開発者は、次の推奨プラクティスに従う必要があります。

  • Javaキーストア(JKS)を使用してJava EEアプリケーションの証明書を保存します。

  • キーストア・パス、トラストストア・パス、構成ファイルの認証タイプなどのSSL構成パラメータは、アプリケーション・コードのそれぞれの値に埋め込まず、外部に配置します。そうすることで、アプリケーション自体を変更せずに柔軟にSSL構成を変更できます。

SSL関連のWLSTリファレンス

Oracleウォレットを管理し、Oracle Fusion Middlewareコンポーネント用のSSLを構成するために、WLSTコマンドが使用できます。

これらのWLSTコマンドの詳細は、『インフラストラクチャ・セキュリティWLSTコマンド・リファレンス』の次の章を参照してください。

関連項目:

WLSTシェルを起動してSSL関連コマンドを実行する方法の詳細は、「キーストアおよびウォレット用コマンド行インタフェース」を参照してください。WLSTインタフェースは、他のどの場所からも起動しないでください。

ノート:

SSL設定に関するWLSTコマンドはすべて、オンライン・モードで実行する必要があります。

ノート:

WLSTを使用する場合、証明書はPEMフォーマットのみでインポートできます。