プライマリ・コンテンツに移動
Oracle® Databaseセキュリティ・ガイド
12c リリース1 (12.1)
B71285-10
目次へ移動
目次
索引へ移動
索引

前
次

18 Secure Sockets Layer認証の構成

Secure Sockets Layer認証を使用するようにOracle Databaseを構成できます。

内容は次のとおりです。

Secure Sockets LayerおよびTransport Layer Security

Secure Sockets Layer (SSL)は安全なネットワーク接続を目的に、Netscape社によって設計されました。

Transport Layer Security (TLS)は、Secure Sockets Layer (SSL)バージョン3.0の増分バージョンです。

SSLは最初にNetscape社によって開発されましたが、Internet Engineering Task Force (IETF)がその開発を引き継ぎ、名前をTransport Layer Security (TLS)に変更しました。

関連項目:

IETF Webサイトの次の場所にあるTLSプロトコル・バージョン1.0(RFC 2246)

http://www.ietf.org

注意:

SSLが最も広く認識されている用語であるため、SSLでもTLSでも適切な場合、この章では説明を簡単にするためにSSLという用語を使用します。ただし、これらのプロトコルの使用方法または構成方法に違いがある場合、この章では、記述内容がSSLに該当するか、TLSに該当するかを明記します。

Oracle DatabaseでのSecure Sockets Layerを使用した認証

Oracle Databaseでは、これらのプロトコルのネイティブ暗号化およびデータ整合性機能だけでなく、SSL上でデジタル証明書を使用します。

Oracle DatabaseのSSL機能を使用してクライアントとサーバー間の通信を保護すると、次の操作を実行できます。

  • SSLを使用したクライアントとサーバー間の接続の暗号化

  • SSL通信用に構成されたOracleデータベース・サーバーに対するクライアントまたはサーバー(Oracle Application Server 10gなど)の認証

SSL機能は、単独で使用するか、Oracle Databaseでサポートされている他の認証方式と組み合せて使用できます。たとえば、SSLから提供されている暗号化をKerberosから提供されている認証と組み合せて使用できます。SSLでは、次の認証モードがサポートされます。

  • サーバーのみ、クライアントに対して自己認証を行います。

  • クライアントとサーバーは、互いに自己認証を行います。

  • クライアントもサーバーも、互いに自己認証を行わず、SSL暗号化機能を単独で使用します。

    関連項目:

    SSLの詳細は、Internet Engineering Task Forceが公開しているSSLプロトコルのバージョン3.0を参照してください。

Oracle環境におけるSecure Sockets Layerの機能: SSLハンドシェイク

Secure Sockets Layerによるネットワーク接続を開始する場合、クライアントとサーバーは、認証を行う前にSSLハンドシェイクを実行します。

ハンドシェイク・プロセスは次のようになります。

  1. クライアントとサーバーは、どの暗号スイートを使用するかを設定します。これには、データ転送に使用する暗号化アルゴリズムも含まれます。

  2. サーバーは証明書をクライアントに送信し、クライアントは、サーバーの証明書が信頼できるCAによって署名されていることを検証します。このステップにより、サーバーの身元が検証されます。

  3. 同様に、クライアント認証が必要な場合は、クライアントが自分自身の証明書をサーバーに送信し、サーバーは、クライアントの証明書が信頼できるCAによって署名されているかどうかを検証します。

  4. クライアントとサーバーが、公開鍵暗号化を使用して鍵情報を交換します。この情報に基づき、双方でセッション鍵が生成されます。クライアントとサーバーとの間の以降の通信はすべて、このセッション鍵と、ネゴシエーションにより決定した暗号スイートを使用して、暗号化または復号化されます。

認証プロセスは次のとおりです。

  1. クライアントで、ユーザーがSSLを使用してサーバーへのOracle Net接続を開始します。

  2. SSLは、クライアントとサーバー間のハンドシェイクを実行します。

  3. ハンドシェイクが成功すると、サーバーは、そのデータベースにアクセスするために必要な認可をユーザーが所有していることを検証します。

Oracle環境における公開鍵インフラストラクチャ

公開鍵インフラストラクチャ(PKI)は、組織全体のセキュリティ基盤を提供するネットワーク・コンポーネントの基質であり、信頼アサーションに基づいています。

内容は次のとおりです。

公開鍵の暗号化について

従来の秘密鍵または対称鍵の暗号化では、通信を保護する目的で2者以上が共有する1つの秘密鍵が必要です。

この鍵は、ユーザー間で送信される保護メッセージの暗号化および復号化に使用されるため、各ユーザーへは事前に安全な方法で鍵を配布する必要があります。この方法における問題点は、鍵を安全に転送し、格納することが困難なことです。

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

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

この攻撃を回避するには、公開鍵の所有者の確認(認証と呼ばれるプロセス)が必要です。認証は、通信する双方の委託するサード・パーティの認証局(CA)によって行われます。

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

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

Oracle環境における公開鍵インフラストラクチャ・コンポーネント

Oracle環境の公開鍵インフラストラクチャ(PKI)のコンポーネントには、認証局、証明書、証明書失効リストおよびウォレットなどがあります。

内容は次のとおりです。

認証局

認証局(CA)は、ユーザー、データベース、管理者、クライアント、サーバーなどのエンティティの識別情報を証明する、信頼できるサード・パーティです。

エンティティが証明書を要求すると、CAはその識別情報を検証し、CAの秘密鍵を使用して署名した証明書を発行します。

CAごとに、証明書の発行時の識別情報要件が異なる可能性があります。CAの中には、要求者の識別情報をドライバのライセンスを使用して確認したり、要求者の指紋で識別情報を確認したり、証明書リクエスト・フォームが認証されていることを必要とするものがあります。

CAは、公開鍵が含まれている独自の証明書を発行します。各ネットワーク・エンティティには、信頼できるCA証明書のリストがあります。通信する前に、ネットワーク・エンティティは証明書を交換し、相互の証明書がそれぞれの信頼できるCA証明書リストのいずれかのCAによって署名されていることを確認します。

ネットワーク・エンティティは、同じCAから、または異なるCAから証明書を取得できます。デフォルトでは、Oracle Databaseは、新規ウォレットの作成時にVeriSign社、RSA社、Entrust社およびGTE CyberTrust社から信頼できる証明書を自動的にインストールします。

関連項目:

ウォレット

証明書

証明書は、エンティティの公開鍵が、信頼できる認証局(CA)によって署名されたときに作成されます。

この証明書は、そのエンティティの識別情報が正しいこと、および公開鍵がそのエンティティに実際に属していることを保証します。

証明書には、エンティティの名前、公開鍵、有効期限、さらにシリアル番号および証明連鎖情報が含まれています。また、証明書に関連付けられた権限に関する情報が含まれている場合もあります。

ネットワーク・エンティティが証明書を受信すると、それが信頼できる証明書、つまり信頼できる認証局によって発行および署名された証明書であるか検証します。証明書は、期限切れになるか失効するまで有効です。

証明書失効リスト

公開鍵ペアをユーザーIDにバインドする証明書にCAが署名すると、証明書は指定された期間有効になります。

ただし、ユーザー名の変更や秘密鍵の漏えいなどの特定のイベントが発生した場合は、有効期間が終了する前に証明書が無効になることがあります。この場合は、CAによって証明書が失効され、そのシリアル番号が証明書失効リスト(CRL)に追加されます。CAは、特定の公開鍵が、関連付けられているユーザーIDの確認に使用できなくなると、定期的にCRLを発行してユーザーに警告します。

サーバーまたはクライアントはOracle環境でユーザー証明書を受信すると、その有効期限、署名および失効ステータスをチェックして証明書を検証できます。証明書失効ステータスは、発行されたCRLに照らして検証することでチェックされます。証明書失効ステータス・チェックが有効になっている場合、サーバーはこの機能の構成方法に応じて適切なCRLを検索します。サーバーは、次の場所で(この順番で) CRLを検索します。

  1. ローカル・ファイル・システム

  2. Oracle Internet Directory

  3. CRL配布ポイント。証明書が発行されたときの、CRL Distribution Point (CRL DP)X.509バージョン3の証明書拡張で指定されている場所。

注意:

他のOracle製品でCRLを使用するには、その製品のドキュメントを参照してください。CRLによる証明書の検証の実装は、Oracle Database 12c リリース1 (12.1)のSSLアダプタでのみ使用できます。

関連項目:

このPKIコンポーネントの構成および管理の詳細は、証明書失効リストによる証明書の検証を参照してください

ウォレット

ウォレットは、認証および署名資格証明(SSLで必要な秘密鍵、証明書、信頼できる証明書など)の格納に使用されるコンテナです。

Oracle環境では、SSL通信を行うどのエンティティにも、X.509バージョン3の証明書、秘密鍵および信頼できる証明書のリストが必要です。ただし、Diffie-Hellmanは例外です。

セキュリティ管理者は、サーバーのセキュリティ資格証明の管理にOracle Wallet Managerを使用します。ウォレットの所有者は、クライアントのセキュリティ資格証明の管理に使用します。具体的には、Oracle Wallet Managerは次のことを行うために使用します。

  • 公開鍵と秘密鍵のペアの生成および証明書リクエストの作成

  • 秘密鍵と一致するユーザー証明書の格納

  • 信頼できる証明書の構成

    関連項目:

    • Oracle Wallet Managerの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

    • Oracleウォレットの新規作成の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

    • Oracleウォレットでの信頼できる証明書の管理の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

ハードウェア・セキュリティ・モジュール

SSLのハードウェア・セキュリティ・モジュールには、様々な機能を処理するデバイスや、暗号情報を格納するハードウェア・デバイスなどがあります。

Oracle Databaseでは、これらのデバイスを次の機能に使用します。

  • 秘密鍵などの暗号情報の格納

  • 他のトランザクションに応答できるようにCPUを解放して、サーバーにおけるRSA操作の負荷を軽減する暗号操作の実行

暗号情報は、次の2つのタイプのハードウェア・デバイスに格納できます。

  • (サーバー側)鍵がボックスに格納され、トークンを使用して管理されるハードウェア・ボックス。

  • (クライアント側)トークンへの秘密鍵の格納をサポートするスマートカード・リーダー

Oracle環境では、RSA Security社の公開鍵暗号規格(PKCS)#11仕様に準拠しているAPIを使用したハードウェア・デバイスがサポートされています。

注意:

現在、SafeNETおよびnCipherデバイスがOracle Databaseで認定されています。

Secure Sockets Layerと他の認証方式の併用

Secure Sockets Layer (SSL)をデータベースのユーザー名とパスワード、RADIUSおよびKerberosと同時に使用するようにOracle Databaseを構成できます。

内容は次のとおりです。

アーキテクチャ: Oracle DatabaseとSecure Sockets Layer

Oracle DatabaseとSSLとの連携のアーキテクチャを理解することが重要です。

Secure Sockets LayerアーキテクチャのOracle Databaseの実装を示す図15-4では、Oracle DatabaseがSSLの上位のセッション・レイヤーで動作し、トランスポート・レイヤーでTCP/IPを使用していることを示しています。

このように機能が分離されているため、SSLを他のサポートされているプロトコルと同時に利用できます。

関連項目:

Oracleネットワーキング環境におけるスタック通信の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

Secure Sockets Layerと他の認証方式の併用

Secure Sockets Layerは、Oracle Databaseでサポートされているその他の認証方式との併用が可能です。

図18-1は、Secure Sockets Layerが別の認証方式と併用されている構成を示しています。

図18-1 Secure Sockets Layerと他の認証方式との関係

図18-1の説明は次にあります。
「図18-1 Secure Sockets Layerと他の認証方式との関係」の説明

この例では、最初のハンドシェイク(サーバー認証)を確立するためにSecure Sockets Layerが使用され、クライアントの認証に別の認証方式が使用されています。このプロセスは、次のとおりです。

  1. クライアントがOracleデータベース・サーバーに接続しようとします。

  2. Secure Sockets Layerによってハンドシェイクが実行され、その間にサーバーがクライアントに対して自己認証を行い、クライアントとサーバーの両方が使用する暗号スイートを設定します。

  3. Secure Sockets Layerハンドシェイクが正常に完了すると、ユーザーはデータベースにアクセスしようとします。

  4. Oracleデータベース・サーバーは、KerberosやRADIUSなどの非SSL認証方式を使用して、認証サーバーでユーザーを認証します。

  5. 認証サーバーによる検証が完了すると、Oracleデータベース・サーバーによってアクセス権と認可がユーザーに付与され、ユーザーはSSLを使用してデータベースに安全にアクセスできるようになります。

Secure Sockets Layerとファイアウォール

Oracle Databaseは、アプリケーション・プロキシベースのファイアウォールとステートフル・パケット・インスペクション・ファイアウォールの2つをサポートしています。

ファイアウォールは次のとおりです。

  • アプリケーション・プロキシベースのファイアウォール: Network Associates GauntletやAxent Raptorなど。

  • ステートフル・パケット・インスペクション・ファイアウォール: Check Point Firewall-1やCisco PIX Firewallなど。

SSLを有効にした場合、ステートフル・インスペクション・ファイアウォールは暗号化されたパケットを復号化しないため、アプリケーション・プロキシ・ファイアウォールと同じように動作します。

ファイアウォールは暗号化されたトラフィックを検査しません。ファイアウォールは、イントラネット・サーバーのSSLポート宛てのデータを検出すると、アクセス・ルールに基づいてターゲットIPアドレスを確認し、許可されたSSLポートに対してはSSLパケットを通過させ、他のすべてのパケットは拒否します。

いくつかのファイアウォール・ベンダーが提供しているOracle Net Firewall Proxyキットを使用すると、ファイアウォール・アプリケーションでデータベース・ネットワーク・トラフィックがサポートされます。プロキシ・キットをファイアウォールに実装すると、次の処理が実行されます。

  • Net Proxy (Oracle Net Firewall Proxyキットのコンポーネント)によってトラフィックのルーティング先が決定されます。

  • データベース・リスナーは、SSLハンドシェイクに参加するために、証明書 へのアクセスを要求します。リスナーはSSLパケットを検査し、ターゲット・データベースを識別して、ターゲット・データベースがクライアントのリスニングに使用しているポートを戻します。このポートは、SSLポートとして指定されている必要があります。

  • クライアントは、以降のすべての接続でこのサーバー指定ポートを使用して通信します。

Secure Sockets Layer使用時の問題

他のOracle製品との通信や、サポート対象の認証方式および暗号化方式のタイプといった、SSLの使用に関する問題に注意する必要があります。

SSLを使用する場合は、次のことを考慮してください。

  • SSLを使用すると、Oracle Internet Directoryなどの他のOracle製品との安全な通信が可能になります。

  • SSLでは認証と暗号化の両方がサポートされているため、クライアント/サーバー接続が標準のOracle Net TCP/IPトランスポート(ネイティブ暗号化を使用)より多少遅くなります。

  • 各SSL認証モードには、構成設定が必要となります。

  • マルチスレッド・クライアントでは、現在SSLを使用できません。

注意:

SSL暗号化を構成する場合は、非SSL暗号化を無効にする必要があります。このような暗号化を無効にするには、「厳密認証およびネットワーク暗号化の無効化」を参照してください。

関連項目:

Secure Sockets Layerの有効化

Secure Sockets Layerは、サーバーで構成してから、クライアントで構成する必要があります。

内容は次のとおりです。

手順1: サーバーでのSecure Sockets Layerの構成

インストール中、Oracleデータベース・サーバーとOracleクライアントに、Oracleウォレットの場所を除くSSLパラメータのデフォルトが設定されます。

手順1A: サーバーでのウォレット作成の確認

次の手順に進む前に、ウォレットが作成されていることと、ウォレットに証明書があることを確認する必要があります。

  1. Oracle Wallet Managerを起動します。
    • (UNIXの場合) $ORACLE_HOME/binから、次のコマンドを入力します。

      owm
      
    • (Windowsの場合)「スタート」「プログラム」「Oracle - HOME_NAME」「Integrated Management Tools」「Wallet Manager」の順に選択します。

  2. 「ウォレット」メニューから「オープン」を選択します。

    ウォレットにステータスがReadyの証明書が含まれ、自動ログインがオンになっている必要があります。自動ログインがオンになっていない場合は、「ウォレット」メニューから選択し、ウォレットを再度保存します。自動ログインがオンになります。

関連項目:

Oracleウォレットの新規作成の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

手順1B: サーバーでのデータベース・ウォレット・ロケーションの指定

次に、ウォレットのサーバー上の場所を指定します。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. 「SSL」タブを選択し、「SSL構成: サーバー」を選択します。
  5. 「ウォレット・ディレクトリ」ボックスで、Oracleウォレットが配置されているディレクトリを入力するか、「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。

    エンタープライズ・ユーザー・セキュリティ用にデータベースとディレクトリ間のSSL接続を構成する場合は、Database Configuration Assistantによって自動的にデータベース・ウォレットが作成され、データベースがディレクトリに登録されます。そのウォレットを使用して、SSLで認証されたエンタープライズ・ユーザー・セキュリティのデータベースPKI資格証明を格納する必要があります。

    重要:

    • Oracle Wallet Managerを使用してウォレットを作成します。Oracleウォレットの新規作成の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

    • Oracle Net Managerを使用して、sqlnet.oraファイルにウォレット・ロケーションを設定します。マルチテナント環境では、sqlnet.oraファイルの設定はすべてのプラガブル・データベース(PDB)に適用されることに注意してください。

    ウォレットを作成したとき、およびsqlnet.oraファイルに場所を設定したときと同じ場所を入力してください。

  6. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルとlistener.oraファイルが次のエントリで更新されます。

    wallet_location = 
     (SOURCE=
      (METHOD=File)
      (METHOD_DATA=
       (DIRECTORY=wallet_location)))

注意:

リスナーでは、listener.oraファイルに定義されているウォレットを使用します。任意のデータベース・ウォレットを使用できます。Net Managerを使用してサーバーのSSLが構成されている場合、ウォレット・ロケーションはlistener.oraファイルとsqlnet.oraファイルに入力されています。listener.oraファイルは、Oracleクライアントには関係ありません。

リスナーが独自のウォレットを所有するようにリスナーのウォレット・ロケーションを変更するには、listener.oraを編集して新しい場所を入力します。

手順1C: サーバーでのSecure Sockets Layer暗号スイートの設定(オプション)

オプションで、Secure Sockets Layer暗号スイートを設定できます。

内容は次のとおりです。

Secure Sockets Layer暗号スイートについて

暗号スイートは、ネットワーク・エンティティ間のメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセットです。

Secure Sockets Layerハンドシェイク時に、2つのエンティティがネゴシエートし、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Databaseをインストールすると、表18-1のSecure Sockets Layer暗号スイートがデフォルトで設定され、リスト順にネゴシエートされます。デフォルトの順序は、SSL_CIPHER_SUITESパラメータを設定して上書きできます。

暗号スイートの優先順位を設定できます。クライアントが使用する暗号スイートに関してサーバーとネゴシエートする場合、設定されている優先順位に従います。暗号スイートの優先順位を設定する場合は、次の点を考慮してください。

  • 互換性。正常に接続するには、互換性のある暗号スイートを使用するようにサーバーとクライアントを構成する必要があります。

  • 暗号の優先順位と強度。最高レベルのセキュリティを確保するために、最も強力なものから最も弱いものの順に暗号スイートの優先順位を設定します。

  • 使用するセキュリティ・レベル。

  • パフォーマンスへの影響。

    注意:

    Diffie-Hellman 匿名認証について:

    • この暗号スイートを使用するようにサーバーを設定する場合は、同じ暗号スイートをクライアントにも設定する必要があります。設定しない場合、接続に失敗します。

    • Diffie-Hellman匿名を使用する暗号スイートを使用する場合、SSL_CLIENT_AUTHENTICATIONパラメータをFALSEに設定する必要があります。詳細は、手順1E: サーバーでのSSLクライアント認証の設定(オプション)を参照してください。

    • 既知の不具合があり、クライアントを認証しないDH_ANONを含む暗号スイートを使用する場合でも、OCIクライアントでウォレットが必要です。

SSL暗号スイートの認証、暗号化、整合性およびTLSバージョン

Oracle Databaseでは、Oracle Databaseをインストールするとデフォルトで設定される一連の暗号スイートがサポートされています。

表18-1に、各暗号スイートで使用される認証、暗号化およびデータ整合性のタイプを示します。

表18-1 Secure Sockets Layer暗号スイート

暗号スイート 認証 暗号化 データ整合性 TLSの互換性

SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

ECDHE_ECDSA

AES 128 GCM

SHA256 (SHA-2)

TLS 1.2のみ

SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

ECDHE_ECDSA

AES 128 CBC

SHA-1

TLS 1.0以降

SSL_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

ECDHE_ECDSA

AES 128 CBC

SHA256 (SHA-2)

TLS 1.2のみ

SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA

ECDHE_ECDSA

AES 256 CBC

SHA-1

TLS 1.0以降

SSL_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384

ECDHE_ECDSA

AES 256 CBC

SHA384 (SHA-2)

TLS 1.2のみ

SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

ECDHE_ECDSA

AES 256 GCM

SHA384 (SHA-2)

TLS 1.2のみ

SSL_RSA_WITH_AES_128_CBC_SHA256

RSA

AES 128 CBC

SHA256 (SHA-2)

TLS 1.2のみ

SSL_RSA_WITH_AES_128_GCM_SHA256

RSA

AES 128 GCM

SHA256 (SHA-2)

TLS 1.2のみ

SSL_RSA_WITH_AES_128_CBC_SHA

RSA

AES 128 CBC

SHA-1

TLS 1.0のみ

SSL_RSA_WITH_AES_256_CBC_SHA

RSA

AES 256 CBC

SHA-1

TLS 1.0以降

SSL_RSA_WITH_AES_256_CBC_SHA256

RSA

AES 256 CBC

SHA256 (SHA-2)

TLS 1.2のみ

SSL_RSA_WITH_AES_256_GCM_SHA384

RSA

AES 256 GCM

SHA384 (SHA-2)

TLS 1.2のみ

表18-2に、使用可能な暗号スイートを示しますが、これらは通信者の認証を提供しないため、介在者攻撃に対して無防備になる可能性があることに注意してください。機密データを保護する場合は、これらの暗号スイートを使用しないことをお薦めします。ただし、これらは、通信者が匿名を維持する場合や、相互認証によって発生するオーバーヘッドを望まない場合に有効です。

表18-2 SSL_DH Secure Sockets Layer暗号スイート

暗号スイート 認証 暗号化 データ整合性 TLSの互換性

SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

DH anon

3DES EDE CBC

SHA-1

TLS 3.0以降

データベース・サーバーのSecure Sockets暗号スイートの指定

最初に、データベース・サーバーのSecure Sockets暗号スイートを指定する必要があります。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. 「SSL」タブを選択し、「SSL構成: サーバー」を選択します。
  5. 「暗号スイートの構成」領域で、「追加」をクリックします。

    使用可能な暗号スイートがダイアログ・ボックスに表示されます。米国内用の暗号スイートを表示するには、米国内用の暗号スイートの表示チェック・ボックスをクリックします。

  6. スイートを選択し、「OK」をクリックします。

    「暗号スイートの構成」リストが更新されます。

  7. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。
  8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが次のエントリで更新されます。

    SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])

手順1D: サーバーでの必要なSecure Sockets Layerバージョンの設定(オプション)

SSL_VERSIONパラメータでは、サーバーが通信するシステムで実行する必要があるSSLのバージョンを定義します。

オプションで、sqlnet.oraファイルまたはlistener.oraファイルでSSL_VERSIONパラメータを設定できます。

これらのシステムで有効なバージョンを使用するように設定できます。sqlnet.oraにおけるこのパラメータのデフォルト設定はundeterminedで、これは、「ネットワーク・セキュリティ」ウィンドウの「SSL」タブのリストから「任意」を選択すると設定されます。

  1. 「必要なSSLバージョン」リストのデフォルトは「任意」です。

    このデフォルトを受け入れるか、使用するSSLバージョンを選択します。

  2. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    「任意」を選択した場合は、sqlnet.oraファイルが次のエントリで更新されます。

    SSL_VERSION=UNDETERMINED

注意:

SSL 2.0はサーバー側でサポートされていません。

関連項目:

SSL_VERSIONパラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。

手順1E: サーバーでのSSLクライアント認証の設定(オプション)

SSL_CLIENT_AUTHENTICATIONパラメータは、クライアントがSSLを使用して認証されるかどうかを制御します。

このパラメータはサーバーのsqlnet.oraファイルで設定する必要があります。SSL_CLIENT_AUTHENTICATIONパラメータのデフォルト値はTRUEです。

Diffie-Hellman匿名認証(DH_anon)を含む暗号スイートを使用する場合は、SSL_CLIENT_AUTHENTICATIONFALSEに設定できます。

また、KerberosやRADIUSなどのOracle Databaseでサポートされている非SSL認証方式を使用してクライアントがサーバーに対して自己認証を行うようにする場合も、このパラメータをFALSEに設定できます。

注意:

既知の不具合があり、クライアントを認証しないDH_ANONを含む暗号スイートを使用する場合でも、OCIクライアントでウォレットが必要です。

サーバーでSSL_CLIENT_AUTHENTICATIONFALSEに設定する手順:

  1. Oracle Net Managerの「SSL」ページで、「クライアントの認証が必要」の選択を解除します。
  2. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが次のエントリで更新されます。

    SSL_CLIENT_AUTHENTICATION=FALSE

手順1F: サーバーでの認証サービスとしてのSSLの設定(オプション)

sqlnet.oraファイルのSQLNET.AUTHENTICATION_SERVICESパラメータでは、SSL認証サービスを設定します。

このパラメータは、SSL認証とOracle Databaseでサポートされている別の認証方式を組み合せて使用する場合に設定します。たとえば、サーバーがSSLを使用してクライアントに対して自己認証を行い、クライアントがKerberosを使用してサーバーに対して自己認証を行う場合に、このパラメータを使用します。

  • サーバーでSQLNET.AUTHENTICATION_SERVICESパラメータを設定するには、テキスト・エディタを使用して、sqlnet.oraファイルのこのパラメータにSSL (TCPS)付きTCP/IPを追加します。たとえば、SSL認証とRADIUS認証を組み合せて使用する場合は、このパラメータを次のように設定します。

     SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)
    

SSL認証と別の認証方式を組み合せて使用しない場合は、このパラメータを設定しません。

手順1G: SSL付きTCP/IPを使用するリスニング・エンドポイントのサーバーでの作成

SSL付きTCP/IPを使用するリスニング・エンドポイントをサーバーで構成できます。

  • listener.oraファイルでリスナーを構成します。一般的なOracle Netクライアントには、ポート番号2484を使用することをお薦めします

関連項目:

listener.oraファイルの構成方法の詳細は、Oracle Database Net Servicesリファレンスを参照してください

手順2: クライアントでのSecure Sockets Layerの構成

SSLをクライアントで構成する場合、サーバーDNを構成して、SSL付きTCP/IPをクライアントで使用します。

手順2A: クライアント・ウォレット作成の確認

クライアントでウォレットが作成されていることと、クライアントに有効な証明書があることを確認する必要があります。

注意:

Oracle Wallet Managerを使用して、各認証局に関連付けられたOracleウォレット内の使用していない信頼できる証明書を削除することをお薦めします。

関連項目:

  • ウォレットの一般情報は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

  • 既存のウォレットを開く方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

  • ウォレットの新規作成の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

手順2B: サーバーDNの構成とクライアントのSSL付きTCP/IPの使用

次に、サーバーDNを構成し、クライアントでSSL付きのTCP/IPを使用します。

内容は次のとおりです。

サーバーDNSの構成およびクライアントでのSSL付きTCP/IPの使用について

サーバーDNを含み、クライアントでSSL付きのTCP/IPを使用するようにOracle Net Service名を構成できます。

これを実行するには、クライアント・ネットワーク構成ファイルで、サーバーDNマッチングおよびTCP/IPをSSL接続できるように、プロトコルとしてサーバーの識別名(DN)TCPSを指定する必要があります。サーバーDNマッチングでは、サーバー証明書からDNに対してサーバーのグローバル・データベース名をマッチングすることで、データベース・サーバーが接続時にクライアントに対するIDの偽装が防止されます。

クライアント・ネットワーク構成ファイルのtnsnames.oraおよびlistener.oraを手動で編集して、サーバーのDNとTCP/IPをSSLプロトコルに指定する必要があります。tnsnames.oraファイルは、クライアントまたはLDAPディレクトリに配置できます。サーバーに配置される場合は、通常、listener.oraファイルと同じディレクトリに存在します。オペレーティング・システムに応じて、これらのファイルは次のディレクトリにあります。

  • (UNIXの場合) $ORACLE_HOME/network/admin/

  • (Windowsの場合) ORACLE_BASE\ORACLE_HOME\network\admin\

サーバーDNSの構成およびクライアントでのSSL付きTCP/IPの使用

サーバーDNSを構成し、クライアントでSSL付きのTCP/IPを使用するようにtnsnames.oraファイルとlistener.oraファイルを編集する必要があります。

  1. クライアントのtnsnames.oraファイルにSSL_SERVER_CERT_DNパラメータを追加して、データベース・サーバーのDNを次のように指定します。
    (SECURITY=
    (SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=acme"))
    

    クライアントは、この情報を使用して、各サーバーに予定しているDNのリストを取得して、サーバーのDNとそのサービス名が確実に一致するようにします。次の例では、tnsnames.oraファイルでのFinanceデータベースのエントリを示しています。

    finance=
    (DESCRIPTION=
    (ADDRESS_LIST=
    (ADDRESS= (PROTOCOL = tcps) (HOST = finance_server) (PORT = 1575)))
    (CONNECT_DATA=
    (SERVICE_NAME= Finance.us.example.com))
    (SECURITY=
    (SSL_SERVER_CERT_DN="cn=finance,cn=OracleContext,c=us,o=acme"))
    

    デフォルトで、tnsnames.oraは$ORACLE_HOME/network/adminディレクトリ(UNIXシステムの場合)またはORACLE_HOME\network\admin(Windowsの場合)にあります。

    または、サーバーのDNの共通名(CN)部分がサービス名と一致していることを確認できます。

  2. クライアントのtnsnames.oraファイルに、ADDRESSパラメータのPROTOCOLとしてtcpsと入力します。

    この指定により、クライアントはSSL付きTCP/IPを使用して、SERVICE_NAMEパラメータに指定されたデータベースに接続します。次に、tnsnames.oraファイル内の接続プロトコルとしてSSL付きTCP/IPを指定するエントリも示します。

    LISTENER=
    (DESCRIPTION_LIST=
    (DESCRIPTION=
    (ADDRESS= (PROTOCOL = tcps) (HOST = finance_server) (PORT = 1575))))
    
  3. listener.oraファイルに、ADDRESSパラメータのPROTOCOLとしてtcpsと入力します。

手順2C: 必要なクライアントSSL構成の指定(ウォレット・ロケーション)

Oracle Net Managerを使用して、必要なクライアントSSL構成を指定できます。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. SSL」タブを選択します。
  5. 「SSL構成: クライアント」を選択します。
  6. 「ウォレット・ディレクトリ」ボックスで、Oracleウォレットが配置されているディレクトリを入力するか、「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。
  7. 「サーバーX.509の名前に一致」リストから、次のいずれかのオプションを選択します。
    • はい: サーバーの識別名(DN)がそのサービス名と一致している必要があります。SSLによって証明書がサーバーからのものであることが確認され、一致した場合は接続が成功します。

      このチェックは、デフォルト設定であるRSA暗号が選択されている場合にのみ実行できます。

    • いいえ(デフォルト): SSLによってDNとサービス名が一致するかどうかが確認されますが、強制はされません。結果に関係なく接続は成功しますが、一致しない場合はエラーが記録されます。

    • クライアントで決定: デフォルトを有効にします。

      「いいえ」を選択すると、次のアラートが表示されます。

      Security Alert
      Not enforcing the server X.509 name match allows a server to potentially fake its identity. Oracle recommends selecting YES for this option so that connections are refused when there is a mismatch.
      
  8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    クライアントのsqlnet.oraファイルが次のエントリで更新されます。

    SSL_CLIENT_AUTHENTICATION =TRUE
    wallet_location = 
     (SOURCE=
      (METHOD=File)
      (METHOD_DATA=
       (DIRECTORY=wallet_location)))
    
    SSL_SERVER_DN_MATCH=(ON/OFF)

関連項目:

サーバー照合パラメータの詳細は、次を参照してください。

Oracle Net Managerを使用してSSL付きTCP/IPを構成する方法の詳細は、次を参照してください。

  • Oracle Database Net Services管理者ガイド

  • 『Oracle Database Net Servicesリファレンス・ガイド』

手順2D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)

オプションで、SSL暗号スイートを設定できます。Oracle Databaseには、変更可能なデフォルトの暗号スイート設定が用意されています。

内容は次のとおりです。

クライアントのSecure Sockets Layer暗号スイートの設定について

暗号スイートは、ネットワーク・エンティティ間のメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセットです。

SSLハンドシェイク時に、2つのエンティティがネゴシエートし、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Databaseをインストールすると、表18-1のSSL暗号スイートがデフォルトで設定されます。2つのエンティティが接続をネゴシエートするときに、この表のリスト順で暗号スイートが試行されます。デフォルトは、SSL_CIPHER_SUITESパラメータを設定して上書きできます。たとえば、Oracle Net Managerを使用して暗号スイートSSL_RSA_WITH_RC4_128_SHAを追加する場合、デフォルト設定の他のすべての暗号スイートは無視されます。

暗号スイートの優先順位を設定できます。クライアントが使用する暗号スイートに関してサーバーとネゴシエートする場合、設定されている優先順位に従います。暗号スイートの優先順位を設定する場合は、次の点を考慮してください。

  • 使用するセキュリティ・レベル。たとえば、Triple-DES暗号化は、DESよりも強力です。

  • パフォーマンスへの影響。たとえば、Triple-DES暗号化は、DESよりも低速です。Oracle DatabaseでSSLハードウェア・アクセラレータを使用する方法の詳細は、「ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成」を参照してください。

  • 管理要件。クライアントに対して選択された暗号スイートは、サーバーに必要な暗号スイートと互換性がある必要があります。たとえば、Oracle Call Interface (OCI)ユーザーの場合、サーバーはクライアントに自己認証を求めます。この場合、証明書の交換を許可しないDiffie-Hellman匿名認証を利用する暗号スイートは使用できません。

通常、暗号スイートは最も強力なものから弱いものの順に優先順位を設定します。

表18-1に、現在サポートされているSecure Sockets Layer暗号スイートを示します。これらの暗号スイートは、Oracle Databaseをインストールするとデフォルトで設定されます。表では、各暗号スイートで使用される認証、暗号化およびデータ整合性のタイプも示されています。

注意:

sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATIONパラメータをtrueに設定する場合は、Diffie-Hellman匿名認証を使用するすべての暗号スイートを無効にします。設定しない場合、接続に失敗します。

クライアントのSecure Sockets Layer暗号スイートの設定

Oracle Net Managerを使用して、クライアントSSL暗号スイートを設定できます。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. SSL」タブを選択します。
  5. 「暗号スイートの構成」領域で、「追加」をクリックします。

    使用可能な暗号スイートがダイアログ・ボックスに表示されます。

  6. スイートを選択し、「OK」をクリックします。

    次に示すように、「暗号スイートの構成」リストが更新されます。

  7. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。
  8. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが次のエントリで更新されます。

    SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])

手順2E: 必要なSSLバージョンのクライアントでの設定(オプション)

SSL_VERSIONパラメータでは、クライアントが通信するシステムで実行する必要があるSSLのバージョンを定義します。

sqlnet.oraファイルでSSL_VERSIONパラメータを設定する必要があります。これらのシステムで有効なバージョンを使用するように設定できます。

sqlnet.oraにおけるこのパラメータのデフォルト設定はundeterminedで、これは、「ネットワーク・セキュリティ」ウィンドウの「SSL」タブのリストから「任意」を選択すると設定されます。「任意」を選択すると、TLS 1.0が最初に試行され、その後、SSL 3.0、SSL 2.0の順に試行されます。クライアントのSSLバージョンがサーバーで使用されているバージョンと互換性があることを確認します。

  1. 「必要なSSLバージョン」リストで、構成するSSLバージョンを選択します。

    デフォルトの設定は「任意」です。

  2. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが更新されます。「任意」を選択した場合は、次のエントリで更新されます。

    SSL_VERSION=UNDETERMINED

手順2F: クライアントにおける認証サービスとしてのSSLの設定(オプション)

sqlnet.oraファイルのSQLNET.AUTHENTICATION_SERVICESパラメータでは、SSL認証サービスを設定します。

SQLNET.AUTHENTICATION_SERVICESパラメータについて

SQLNET.AUTHENTICATION_SERVICESパラメータは、SSL認証とOracle Databaseでサポートされている別の認証方式の併用を可能にします。

たとえば、サーバーがSSLを使用してクライアントに対して自己認証を行い、クライアントがRADIUSを使用してサーバーに対して自己認証を行う場合に、このパラメータを使用します。

SQLNET.AUTHENTICATION_SERVICESパラメータを設定するには、sqlnet.oraファイル(他のネットワーク構成ファイルと同じディレクトリにあります)を編集する必要があります。

プラットフォームに応じて、sqlnet.oraファイルは次のディレクトリにあります。

  • (UNIXの場合) $ORACLE_HOME/network/admin

  • (Windowsの場合) ORACLE_BASE\ORACLE_HOME\network\admin\

SQLNET.AUTHENTICATION_SERVICESパラメータの設定

sqlnet.oraファイルでSQLNET.AUTHENTICATION_SERVICESパラメータを設定できます。

  • クライアントのSQLNET.AUTHENTICATION_SERVICESパラメータを設定するには、テキスト・エディタを使用して、sqlnet.oraファイルのこのパラメータにSSL付きTCP/IP (TCPS)を追加します。

    たとえば、SSL認証とRADIUS認証を組み合せて使用する場合は、このパラメータを次のように設定します。

     SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)
    

SSL認証と別の認証方式を組み合せて使用しない場合は、このパラメータを設定しません。

手順2G: クライアントでの認証に使用する証明書の指定(オプション)

sqlnet.oraファイルのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータは、データベース・サーバー認証時に使用する証明書を指定します。

内容は次のとおりです。

SQLNET.SSL_EXTENDED_KEY_USAGEパラメータについて

sqlnet.oraファイルのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータは、データベース・サーバー認証時に使用する証明書を指定します

セキュリティ・モジュールに複数の証明書があるが、1つの証明書のみにクライアント認証の拡張鍵使用方法フィールドがあり、その証明書がまさに、データベースの認証に使用する証明書である場合、SQLNET.SSL_EXTENDED_KEY_USAGEパラメータを設定します。

たとえば、スマートカードに複数の証明書があり、そのうちの1つのみにclient authenticationの拡張鍵使用方法フィールドがあり、その証明書Cをデータベースの認証に使用する場合、このパラメータを設定します。Windowsクライアントでこのパラメータをclient authenticationに設定すると、MSCAPI証明書の選択ボックスが表示され、証明書Cが自動的に、サーバーへのクライアントのSSL認証に使用されます。

SQLNET.SSL_EXTENDED_KEY_USAGEパラメータの設定

SQLNET.SSL_EXTENDED_KEY_USAGEを設定して、クライアント認証を設定できます。

  • クライアントのSQLNET.SSL_EXTENDED_KEY_USAGEパラメータを設定するには、sqlnet.oraファイルを編集し、次の行を含めます。

    SQLNET.SSL_EXTENDED_KEY_USAGE = "client authentication"
    

証明書のフィルタ処理を使用しない場合は、sqlnet.oraファイルからSQLNET.SSL_EXTENDED_KEY_USAGEパラメータ設定を削除します。

手順3: データベース・インスタンスへのログイン

構成の完了後、データベースにログインします。

  • SQL*Plusを起動して、次のいずれかの接続コマンドを入力します。

    • クライアントにSSL認証を使用する場合は(sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATION=trueを設定)、次のように入力します。

      CONNECT/@net_service_name
      
    • SSL認証を使用しない場合は(sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATION=falseを設定)、次のように入力します。

      CONNECT username@net_service_name
      Enter password: password
      

関連項目:

証明書失効リストで証明書を検証するようにクライアントを構成する方法の詳細は、証明書失効リストによる証明書の検証を参照してください

Secure Sockets Layer構成のトラブルシューティング

Oracle Database SSLアダプタの使用中に一般的なエラーが発生する場合があります。

Oracle Netトレースを有効にして、エラーの原因を特定することが必要になる場合があります。トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

ORA-28759: ファイルのオープンに失敗しました

原因: 指定されたファイルをオープンできませんでした。通常、このエラーはウォレットが見つからないために発生します。

処置: 次の点を確認します。

  • sqlnet.oraファイルに正しいウォレット・ロケーションが指定されていることを確認します。これは、ウォレットを保存したディレクトリと同じにする必要があります。

  • Oracle Netトレースを有効にして、開くことができないファイルの名前とその原因を調べます。

  • ウォレットを保存したときに自動ログインが有効になっていたことを確認します。『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

ORA-28786: 暗号化された秘密鍵の復号化に失敗しました

原因: 暗号化された秘密鍵の復号化に不正なパスワードが使用されました。このことは、多くの場合、自動ログイン・ウォレットが使用されていないために発生します。

処置: Oracle Wallet Managerを使用して、ウォレットの自動ログイン機能をオンにします。次に、ウォレットを再度保存します。『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

自動ログイン機能が使用されていない場合は、正しいパスワードを入力します。

ORA-28858: SSLプロトコル・エラーが発生しました

原因: これは、2つのプロセス間のSSLハンドシェイク・ネゴシエーション中に発生する可能性がある一般的なエラーです。

処置: Oracle Netトレースを使用可能にし、再接続してトレース出力を生成します。トレース出力をOracleカスタマ・サポートに連絡してください。

ORA-28859 SSLでネゴシエーションに失敗しました

原因: SSLプロトコルの一部である2つのプロセス間のネゴシエーション中にエラーが発生しました。このエラーは、両プロセスの接続で同じ暗号スイートがサポートされていない場合に発生する可能性があります。

処置: 次の点を確認します。

  • Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

  • Oracle Net Managerを使用して、クライアントとサーバーの両方で構成されている暗号スイートをチェックし、両方に互換性のある暗号スイートが設定されていることを確認します。

    エラーが繰り返される場合は、Oracle Netトレースを有効にし、再接続してください。トレース出力をOracleカスタマ・サポートに連絡してください。

    関連項目:

    クライアントとサーバーで互換性のある暗号スイートを設定する方法の詳細は、「手順2D: クライアントのSecure Sockets Layer暗号スイートの設定(オプション)」を参照してください。

    注意:

    暗号スイートを構成しない場合は、使用可能なすべての暗号スイートが有効になります。

ORA-28862: SSL接続に失敗しました。

原因: このエラーは、ピアが接続をクローズしたために発生しました。

処置: 次の点を確認します。

  • ウォレットが検出されるように、sqlnet.oraファイルに正しいウォレット・ロケーションが指定されていることを確認します。

  • Oracle Net Managerを使用して、sqlnet.oraファイルに暗号スイートが正しく設定されていることを確認します。このエラーは、sqlnet.oraが手動で編集され、暗号スイート名の綴りが誤っている場合に発生することがあります。暗号スイート名で大/小文字が区別される文字列照合が使用されていることを確認します。

  • Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。このエラーは、サーバーとクライアントに指定されているSSLバージョンが一致しないために発生することがあります。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

  • 診断情報の詳細を確認するために、ピアでOracle Netトレースを有効にします。

ORA-28865: SSL接続はクローズしました。

原因: 基礎となるトランスポート層でエラーが発生したか、ピア・プロセスが突然停止したため、SSL接続がクローズしました。

処置: 次の点を確認します。

  • Oracle Net Managerを使用して、クライアントとサーバーの両方のSSLバージョンが一致しているか、互換性があることを確認します。このエラーは、サーバーとクライアントに指定されているSSLバージョンが一致しないために発生することがあります。たとえば、サーバーでSSL 3.0のみを受け入れ、クライアントでTLS 1.0のみを受け入れる場合、SSL接続は失敗します。

  • Diffie-Hellman匿名暗号スイートを使用し、サーバーのlistener.oraファイルでSSL_CLIENT_AUTHENTICATIONパラメータがtrueに設定されている場合、クライアントは証明書をサーバーに渡しません。サーバーがクライアントの証明書を受信しない場合、クライアントを認証できないため接続がクローズされます。これを解決するには、別の暗号スイートを使用するか、このlistener.oraパラメータをfalseに設定します。

  • Oracle Netトレースを有効にし、トレース出力にネットワーク・エラーがないか確認します。

  • 詳細は、「ORA-28862: SSL接続に失敗しました。」の「処置」を参照してください。

ORA-28868: ピア証明連鎖のチェックに失敗しました。

原因: ピアが証明連鎖を提示したときに、その証明連鎖のチェックに失敗しました。この失敗の原因として、いくつかの問題が考えられます。

  • 連鎖内のいずれかの証明書が期限切れになっています。

  • 連鎖内のいずれかの証明書の認証局がトラスト・ポイントとして認識されていません。

  • いずれかの証明書の署名を検証できません。

処置: Oracle Wallet Managerを使用してウォレットを開き、次のことを確認するには、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

  • ウォレットにインストールされているすべての証明書が使用可能である(期限切れでない)こと。

  • ピア証明連鎖からの認証局の証明書が、ウォレットに信頼できる証明書として追加されています。Oracle Wallet Managerを使用して、信頼できる証明書をインポートするには、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

ORA-28885: 必須の鍵使用方法のある証明書が見つかりません。

原因: 証明書は、適切なX.509バージョン3の鍵使用方法の拡張機能を使用して作成されていません。

処置: Oracle Wallet Managerを使用して、証明書の鍵使用方法をチェックします。鍵使用方法の値の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

ORA-29024: 証明書の検証に失敗しました

原因: 反対側から送信された証明書の妥当性チェックに失敗しました。このエラーは、証明書が期限切れか、失効済か、または他の理由で無効になっている場合に発生する可能性があります。

処置: 次の点を確認します。

  • 証明書をチェックして、有効かどうかを確認します。必要に応じて、新規の証明書を取得するか、送信者に証明書にエラーがあることを警告するか、または再送します。

  • サーバーのウォレットに、クライアントの証明書を検証検証するための適切なトラスト・ポイントがあることを確認します。トラスト・ポイントがない場合は、Oracle Wallet Managerを使用して、適切なトラスト・ポイントをウォレットにインポートします。信頼できる証明書のインポートの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

  • 証明書が失効していないこと、および証明書失効リスト(CRL)チェックがオンになっていることを確認します。詳細は、証明書失効リストによる証明書検証の構成を参照してください

ORA-29223: 証明連鎖を作成できませんでした

原因: インストールする証明書の既存のトラスト・ポイントを使用して証明連鎖を作成できません。通常、このエラーは、ピアによって完全な連鎖が提供されず、連鎖を完了するのに適切なトラスト・ポイントがない場合に戻されます。

処置: Oracle Wallet Managerを使用して、連鎖の完了に必要なトラスト・ポイントをインストールします。信頼できる証明書のインポートの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

証明書失効リストによる証明書の検証

オラクル社では、証明書失効リストを使用して証明書を検証できるツールを提供しています。

内容は次のとおりです。

証明書失効リストによる証明書検証について

指定の証明書を指定のコンテキストで使用できるかどうかを判定するプロセスは、証明書の検証と呼ばれます。

証明書の検証には、次が該当するかどうかの判定が含まれます。

  • 信頼できる認証局(CA)にデジタル署名された証明書があるかどうか。

  • 証明書のデジタル署名が、証明書自体の別個に計算されたハッシュ値および証明書の署名者の(CAの)公開鍵に対応しているかどうか。

  • 証明書が期限切れになっていないかどうか。

  • 証明書が失効していないかどうか。

SSLネットワーク・レイヤーは、自動的に最初の3つの検証チェックを実行しますが、証明書が失効していないことを確認するには、証明書失効リスト(CRL)のチェックを構成する必要があります。CRLは、失効した証明書のリストを含む署名付きデータ構造体です。これは通常、元の証明書を発行したエンティティと同じエンティティによって発行され署名されます。(「証明書失効リスト(CRL)」を参照。)

使用するCRLの選択方法

使用するトラスト・ポイントすべてについてCRLが必要です。

トラスト・ポイントは、一定の信頼レベルで資格を与えられたサード・パーティ・アイデンティティからの信頼できる証明書です。

通常、信頼する認証局はトラスト・ポイントと呼ばれます。

CRLチェックの動作の仕組み

Oracle Databaseでは証明書の失効状態をCRLに照らして確認します。

CRLはファイル・システム・ディレクトリ(Oracle Internet Directory)に存在するか、または証明書のCRL配布ポイント(CRL DP)拡張で指定された場所からダウンロードして入手します。

通常、CRL定義は数日間有効です。CRLをローカル・ファイル・システムまたはディレクトリに格納する場合、CRLを定期的に更新する必要があります。 CRL配布ポイント(CRL DP)を使用する場合、証明書が使用されるたびにCRLがダウンロードされるため、CRLを定期的に更新する必要はありません。

サーバーは、次の場所で(ここに示されている順番で)CRLを検索します。システムは、証明書のCAのDNと一致するCRLを検出すると、検索を停止します。

  1. ローカル・ファイル・システム

    システムは、まずsqlnet.oraファイルのSSL_CRL_FILEパラメータを確認し、それからSSL_CRL_PATHパラメータを確認します。システムは、これらの2つのパラメータが指定されていない場合、ウォレット・ロケーションで任意のCRLをチェックします。

    注意: CRLをローカル・ファイル・システムに格納する場合、orapkiユーティリティを使用してCRLを定期的に更新する必要があります。詳細は、証明書検証用ハッシュ値によるCRLの名前変更を参照してください。

  2. Oracle Internet Directory

    サーバーは、ローカル・ファイル・システムでCRLを検出できず、ldap.oraファイルでディレクトリ接続情報が構成されている場合、このディレクトリを検索します。これは、CAの識別名(DN)およびCRLサブツリーのDNを使用してCRLサブツリーを検索します。

    ディレクトリでCRLを検索するためには、サーバーに、適切に構成されたldap.oraファイルが存在している必要があります。Oracle Internet Directoryのドメイン・ネーム・システム(DNS)検出機能は使用できません。また、CRLをディレクトリに格納する場合、orapkiユーティリティを使用してCRLを定期的に更新する必要があることに注意してください。詳細は、Oracle Internet DirectoryへのCRLのアップロードを参照してください

  3. CRL DP

    CAが、証明書が発行されたときのCRL DP X.509、バージョン3、証明書拡張子内の位置を指定すると、その証明書用の失効情報を含む適切なCRLがダウンロードされます。現在、Oracle Databaseは、LDAPを介したCRLのダウンロードをサポートしています。

    次のことに注意してください。

    • パフォーマンス上の理由から、ユーザー証明書のみがチェックされます。

    • CRLをローカル・ファイル・システムではなくディレクトリに格納することをお薦めします。

証明書失効リストによる証明書検証の構成

sqlnet.oraファイルを編集して、証明書失効リストによる証明書検証を構成できます。

内容は次のとおりです。

証明書失効リストによる証明書検証の構成について

証明書失効ステータス・チェックを有効にするには、sqlnet.oraファイルでSSL_CERT_REVOCATIONパラメータをREQUIREDまたはREQUESTEDに設定する必要があります。

証明書失効ステータス・チェックを有効にするには、sqlnet.oraファイルでSSL_CERT_REVOCATIONパラメータをREQUIREDまたはREQUESTEDに設定する必要があります。

デフォルトでは、このパラメータはNONEに設定され、証明書失効ステータス・チェックはオフになっています。

注意:

CRLをローカル・ファイル・システムまたはOracle Internet Directoryに格納する場合は、コマンドライン・ユーティリティorapkiを使用して、ファイル・システム内のCRLの名前を変更するか、CRLをディレクトリにアップロードします。orapkiの使用方法の詳細は、証明書失効リストの管理を参照してください。

クライアントまたはサーバー用の証明書失効ステータス・チェックの有効化

クライアントまたはサーバー用の証明書失効ステータス・チェックを有効にできます。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. SSL」タブを選択します。
  5. 「失効チェック」リストから次のいずれかのオプションを選択します。
    • 必須: 証明書失効ステータス・チェックが必須です。証明書が失効しているかCRLが見つからない場合、SSL接続は拒否されます。証明書がまだ失効していないことが確認された場合にのみ、SSL接続は許可されます。

    • リクエスト済: CRLが使用可能な場合に、証明書失効ステータス・チェックを実行します。証明書が失効している場合、SSL接続は拒否されます。CRLが見つからない場合や、証明書がまだ失効していない場合、SSL接続は許可されます。

      パフォーマンス上の理由から、ユーザー証明書の失効のみがチェックされます。

  6. (オプション)CRLがローカル・ファイル・システムに格納されている場合は、次のフィールドのいずれか、または両方を設定して、格納場所を指定します。これらのフィールドは、「失効チェック」「必須」または「リクエスト済」に設定されている場合にのみ使用できます。
    • 証明書失効リスト・パス: CRLが格納されているディレクトリへのパスを入力するか、または「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。このパスを指定すると、sqlnet.oraファイルのSSL_CRL_PATHパラメータが設定されます。このパラメータでパスを指定しない場合、デフォルトはウォレット・ディレクトリです。DERエンコードされた(バイナリ形式)CRLおよびPEMエンコードされた(BASE64)CRLの両方がサポートされています。

    • 証明書失効リスト・ファイル: 包括的CRLファイル(PEMエンコードされた(BASE64) CRLが優先度の順に1つのファイルに連結されたもの)へのパスを入力するか、または「参照」をクリックし、ファイル・システムを検索してディレクトリを探します。このファイルを指定すると、sqlnet.oraファイルのSSL_CRL_FILEパラメータが設定されます。このパラメータを設定した場合、ファイルが指定された場所に存在する必要があります。存在しない場合、アプリケーションは起動中にエラーになります。

      「証明書失効リスト・パス」を設定してCRLをローカル・ファイル・システム・ディレクトリに格納する場合は、orapkiユーティリティを使用して、システムが特定できるようにCRLの名前を変更する要があります。証明書検証用ハッシュ値によるCRLの名前変更を参照してください。

  7. (オプション)CRLをOracle Internet Directoryからフェッチする場合は、ディレクトリ・サーバーとポート情報をldap.oraファイルで指定する必要があります。

    ldap.oraファイルを構成する場合は、ディレクトリに非SSLポートのみを指定する必要があります。CRLダウンロードはSSLプロトコルの一部として実行され、SSL接続内でのSSL接続の確立はサポートされません。

    Oracle Internet Directoryの非SSLポートが無効になっている場合、Oracle DatabaseのCRL機能は動作しません。

  8. 「ファイル」「ネットワーク構成の保存」を選択します。sqlnet.oraファイルが更新されます。

証明書失効ステータス・チェックの無効化

証明書失効ステータス・チェックを無効にできます。

  1. Oracle Net Managerを起動します。
    • (UNIX) $ORACLE_HOME/binから、コマンドラインで次のコマンドを入力します。

      netmgr
      
    • (Windows)「スタート」「プログラム」「Oracle - HOME_NAME」「Configuration and Migration Tools」「Net Manager」を選択します。

  2. 「Oracle Netの構成」を展開し、「ローカル」から「プロファイル」を選択します。
  3. 「ネーミング」リストから、「ネットワーク・セキュリティ」を選択します。

    ネットワーク・セキュリティのタブ付きウィンドウが表示されます。

  4. SSL」タブを選択します。
  5. 「失効チェック」リストから「なし」を選択します。
  6. 「ファイル」メニューから、「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが次のエントリで更新されます。

    SSL_CERT_REVOCATION=NONE

関連項目:

証明書の検証のエラーの解決方法は、CRL証明書検証のトラブルシューティングを参照してください。

証明書失効リストの管理

証明書失効リストの管理では、証明書失効チェックを有効にする前に、CRLが正しい書式であることを確認する必要があります。

内容は次のとおりです。

証明書失効リストの管理について

Oracle Databaseには、証明書の管理を実行するために使用できるコマンドライン・ユーティリティorapkiがあります。

証明書失効ステータス・チェックを有効にするには、まず、使用するCAから受信したCRLがコンピュータで使用できるフォームである(ハッシュ値で名前変更されている)こと、またはコンピュータで使用できる場所にある(ディレクトリにアップロードされている)ことを確認してください。

LDAPコマンドライン・ツールを使用して、Oracle Internet DirectoryでCRLを管理することもできます。

注意:

CRLは、正常な検証を行うために、(期限切れになる前に)定期的に更新する必要があります。このタスクは、スクリプトでorapkiコマンドを使用して自動化できます。

CRLを管理するコマンドのorapkiヘルプの表示

CRLの管理に使用可能なorapkiコマンドをすべて表示できます。

  • CRLの管理に使用可能なorapkiコマンドとそのオプションをすべての表示するには、コマンドラインに次のように入力します。

    orapki crl help
    

注意:

-summary-completeまたは-walletコマンド・オプションの使用は、常にオプションです。これらのコマンド・オプションが指定されていなくても、コマンドは実行されます。

証明書検証用ハッシュ値によるCRLの名前変更

システムは、証明書を検証するとき、証明書を作成したCAが発行するCRLを見つける必要があります。

システムは、証明書の発行者名とCRLにある発行者名を照合して適切なCRLを検出します。

Oracle Net Managerの「証明書失効リスト・パス」フィールドにCRL格納場所を指定する(sqlnet.oraファイルのSSL_CRL_PATHパラメータを設定する)場合、orapkiユーティリティを使用して発行者名を表すハッシュ値を使用してCRLを名前変更します。ハッシュ値を作成すると、サーバーでCRLをロードできます。

UNIXオペレーティング・システムでは、orapkiによってCRLへのシンボリック・リンクが作成されます。Windowsオペレーティング・システムでは、CRLファイルのコピーが作成されます。どちらの場合も、orapkiによって作成されたシンボリック・リンクまたはコピーは、発行者名のハッシュ値を使用して名前が付けられます。その後、システムが証明書を検証するとき、同じハッシュ関数が使用されて、適切なCRLをロードできるようにリンク(またはコピー)の名前が計算されます。

  • オペレーティング・システムに応じて、次のコマンドのいずれかを入力して、ファイル・システムに格納されているCRLの名前を変更します。

    • UNIXファイル・システムに格納されているCRLの名前を変更するには:

      orapki crl hash -crl crl_filename [-wallet wallet_location] -symlink crl_directory [-summary]
      
    • Windowsファイル・システムに格納されているCRLの名前を変更するには:

      orapki crl hash -crl crl_filename [-wallet wallet_location] -copy crl_directory [-summary]

この指定では、crl_filenameはCRLファイルの名前、wallet_locationはCRLを発行したCAの証明書を含むウォレットの場所、crl_directoryはCRLがあるディレクトリです。

-walletおよび-summaryの使用はオプションです。-walletを指定すると、CRLの名前を変更する前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。-summaryオプションを指定すると、ツールによってCRL発行者名が表示されます。

Oracle Internet DirectoryへのCRLのアップロード

ディレクトリでCRLを発行すると、企業全体でのCRL検証が可能になり、個々のアプリケーションに固有のCRLを構成する必要がなくなります。

すべてのアプリケーションで、一元的に管理可能なディレクトリに格納されたCRLを使用できるので、CRL管理および使用の管理オーバーヘッドが大幅に減ります。orapkiを使用してディレクトリにCRLをアップロードするユーザーは、ディレクトリ・グループCRLAdmins(cn=CRLAdmins,cn=groups,%s_OracleContextDN%)のメンバーである必要があります。これらのCRLには企業全体でアクセスできるため、これは特権操作です。この管理ディレクトリ・グループに追加するには、ディレクトリ管理者に連絡してください。

  • CRLをディレクトリにアップロードするには:

    orapki crl upload -crl crl_location -ldap hostname:ssl_port -user username [-wallet wallet_location] [-summary]
    

    この指定では、crl_locationはCRLがあるファイル名またはURL、hostnameおよびssl_port(認証なしのSSLポート)はディレクトリがインストールされているシステムに対するもの、usernameはCRLをCRLサブツリーに追加する権限があるディレクトリ・ユーザー、wallet_locationはCRLを発行したCAの証明書を含むウォレットの場所です。

-walletおよび-summaryの使用はオプションです。-walletを指定すると、CRLをディレクトリにアップロードする前に、ツールによってCAの証明書に対するCRLの有効性が確認されます。-summaryオプションを指定すると、CRL発行者名、およびCRLがディレクトリに格納されているLDAPエントリがツールによって出力されます。

次の例では、orapkiユーティリティを使用してCRLをアップロードする方法を示しています。

orapki crl upload -crl /home/user1/wallet/crldir/crl.txt -ldap host1.example.com:3533 -user cn=orcladmin

注意:

  • orapkiユーティリティを使用すると、この操作の実行時にディレクトリ・パスワードの入力を求めるプロンプトが表示されます。

  • Diffie-HellmanベースのSSLサーバーが実行されているディレクトリのSSLポートを指定していることを確認してください。これは、認証を実行しないSSLポートです。サーバー認証も相互認証SSLポートも、orapkiユーティリティではサポートされていません。

Oracle Internet Directoryに格納されているCRLの一覧表示

orapkiを使用してディレクトリに格納されているすべてのCRLのリストを表示できます。特定のCRLを検出してローカル・コンピュータで表示またはダウンロードする際に、このリストを参照すると便利です。

このコマンドを使用すると、CRLを発行したCA(発行者)およびディレクトリのCRLサブツリー内の場所(DN)が表示されます。

  • Oracle Internet DirectoryでCRLを一覧表示するには:

    orapki crl list -ldap hostname:ssl_port
    
    

    hostnameおよびssl_portは、ディレクトリがインストールされているシステムに対するものです。これは、前の項で説明した認証なしのディレクトリのSSLポートであることに注意してください。

Oracle Internet DirectoryでのCRLの表示

Oracle Internet Directory CRLは要約された形式で表示できるほか、CRLの失効した証明書のリストを要求することもできます。

Oracle Internet Directoryに格納されているCRLを要約された形式で表示するか、CRLの失効した証明書の完全なリストを要求できます。

サマリー・リストには、CRL発行者名およびその有効期間が記載されています。完全なリストには、そのCRLに含まれるすべての失効した証明書のリストが記載されています。

  • Oracle Internet DirectoryでCRLのサマリー・リストを表示するには:

    orapki crl display -crl crl_location [-wallet wallet_location] -summary
    

    crl_locationはディレクトリ内のCRLの場所です。orapki crl listコマンドを使用すると表示されるリストからCRLの位置を貼り付けると便利です。Oracle Internet Directoryに格納されているCRLの一覧表示を参照してください。

Oracle Internet Directoryに格納されている指定したCRLに含まれているすべての失効した証明書のリストを表示するには、コマンドラインに次のように入力します。

orapki crl display -crl crl_location [-wallet wallet_location] -complete

たとえば、orapkiコマンドを次のように入力します。

orapki crl display -crl $T_WORK/pki/wlt_crl/nzcrl.txt -wallet $T_WORK/pki/wlt_crl -complete

次の出力が生成されます。これには、CRL発行者のDN、発行日、次の更新日、および含まれる失効した証明書が示されます。

issuer = CN=root,C=us, thisUpdate = Sun Nov 16 10:56:58 PST 2003, nextUpdate = Mon Sep 30 11:56:58 PDT 2013, revokedCertificates = {(serialNo = 153328337133459399575438325845117876415, revocationDate - Sun Nov 16 10:56:58 PST 2003)}
CRL is valid

-walletオプションを使用すると、orapki crl displayコマンドにより、CAの証明書に対してCRLが検証されます。

-completeオプションを選択すると、CRLのサイズによっては、表示に時間がかかる場合があります。

Oracle Directory Manager(Oracle Internet Directoryに付属するグラフィカル・ユーザー・インタフェース)を使用して、ディレクトリ内のCRLを表示することもできます。CRLは、次のディレクトリの場所に格納されます。

cn=CRLValidation,cn=Validation,cn=PKI,cn=Products,cn=OracleContext

Oracle Internet DirectoryからのCRLの削除

orapkiを使用してディレクトリからCRLを削除するユーザーは、ディレクトリ・グループCRLAdminsのメンバーである必要があります。

このディレクトリ管理グループの詳細は、Oracle Internet DirectoryへのCRLのアップロードを参照してください。

  • CRLをディレクトリから削除するには:

    orapki crl delete -issuer issuer_name -ldap host:ssl_port -user username [-summary]
    
    

ここで、issuer_nameはCRLを発行したCAの名前、hostnameおよびssl_portはディレクトリがインストールされているシステムに対するもの、usernameはCRLをCRLサブツリーから削除する権限があるディレクトリ・ユーザーです。このポートは、認証を使用しないディレクトリのSSLポートであることが必要です。このポートの詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。

-summaryオプションを使用すると、削除されたCRL LDAPエントリがツールによって印刷されます。

たとえば、orapkiコマンドを次のように入力します。

orapki crl delete -issuer "CN=root,C=us" -ldap machine1:3500 -user cn=orcladmin -summary

次の出力が生成されます。これには、ディレクトリ内の削除されたCRLの場所が示されます。

Deleted CRL at cn=root cd45860c.rN,cn=CRLValidation,cn=Validation,cn=PKI,cn=Products,cn=OracleContext

CRL証明書検証のトラブルシューティング

CRLに対して証明書を検証するかどうかを判断するには、Oracle Netトレースを有効にできます。

CRLを使用して失効した証明書を検証すると、Oracle Netトレース・ファイルに次のエントリが記録され、entryexitの間にエラー・メッセージは記録されません。

nzcrlVCS_VerifyCRLSignature: entry
nzcrlVCS_VerifyCRLSignature: exit

nzcrlVCD_VerifyCRLDate: entry
nzcrlVCD_VerifyCRLDate: exit

nzcrlCCS_CheckCertStatus: entry
nzcrlCCS_CheckCertStatus: Certificate is listed in CRL
nzcrlCCS_CheckCertStatus: exit

注意:

証明書検証に失敗した場合は、SSLハンドシェイク時にピアに「ORA-29024: 証明書の検証に失敗しました」というメッセージが表示されます。このメッセージが表示された場合は、証明書検証に関連するOracle Netトレース・ファイルのエラー・メッセージでエラーの解決方法を参照してください。

関連項目:

トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

証明書検証に関連するOracle Netトレース・ファイルのエラー・メッセージ

証明書検証に関連するトレース・メッセージが生成されます。

これらのトレースメッセージは、Oracle Netトレース・ファイルのentryエントリとexitエントリの間に記録されることがあります。Oracle SSLは複数の場所でCRLを検索するため、トレースに複数のエラーが記録されることがあります。

エラーの解決方法の詳細は、次の表示される可能性があるエラー・メッセージのリストを確認できます。

RSAステータスでCRLの署名検証に失敗しました

原因: CRLの署名を検証できません。

処置: ダウンロードしたCRLがピアのCAによって発行されたものであることと、ダウンロード時に破損しなかったことを確認します。CRLは、orapkiユーティリティによって検証されてから、ハッシュ値で名前が変更されるかディレクトリにアップロードされます。

関連項目:

CRL管理にorapkiを使用する方法の詳細は、証明書失効リストの管理を参照してください

RSAステータスでCRLの日付検証に失敗しました

原因: 現在の時刻が次の更新フィールド内の時刻より後になっています。このエラーは、CRL DPを使用している場合には表示されません。CRLは次の順番で検索されます。

  1. ファイル・システム

  2. Oracle Internet Directory

  3. CRL DP

この検索で最初に見つかったCRLが最新であるとはかぎりません。

処置: CRLを最新のコピーで更新します。

CRLが見つかりませんでした

原因: 構成されている場所にCRLがありませんでした。構成で証明書検証が必須に指定されている場合、エラーORA-29024が戻されます。

処置: 次の手順を実行して、構成で指定されているCRLの場所が正しいことを確認します。

  1. Oracle Net Managerを使用して、正しいCRLの場所が構成されているかどうかを確認します。証明書失効リストによる証明書検証の構成を参照してください

  2. 必要に応じて、orapkiユーティリティを使用してシステムで使用するCRLを次のように構成します。

Oracle Internet Directoryのホスト名またはポート番号が設定されていません

原因: Oracle Internet Directoryの接続情報が設定されていません。これは致命的エラーではありません。続いてCRL DPが検索されます。

処置: CRLをOracle Internet Directoryに格納する場合は、Oracle Net Configuration Assistantを使用して、Oracleホームのldap.oraファイルを作成し、構成します。

CRL DPからのCRLのフェッチ: CRLが見つかりません

原因: CRL配布ポイント(CRL DP)を使用してCRLをフェッチできませんでした。このことは、証明書にCRL DP拡張で指定された場所がないか、CRL DP拡張で指定されたURLが正しくない場合に発生します。

処置: 認証局が証明書のCRL DP拡張で指定されたURLにCRLを発行することを確認します。

CRLを手動でダウンロードします。次に、それをローカル・ファイル・システムに格納するか、Oracle Internet Directoryに格納するかに応じて、次の手順を実行します。

CRLをローカル・ファイル・システムに格納する場合:

  1. Oracle Net Managerを使用して、CRLディレクトリまたはファイルへのパスを指定します。証明書失効リストによる証明書検証の構成を参照してください

  2. orapkiユーティリティを使用して、システムで使用するCRLを構成します。証明書検証用ハッシュ値によるCRLの名前変更を参照してください

CRLをOracle Internet Directoryに格納する場合:

  1. Oracle Net Configuration Assistantを使用して、ディレクトリ接続情報を含むldap.oraファイルを作成し、構成します。

  2. orapkiユーティリティを使用して、CRLをディレクトリにアップロードします。Oracle Internet DirectoryへのCRLのアップロードを参照してください

ハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

Oracle Databaseでは、RSA Security社のPKCS #11仕様に準拠したAPIを使用するハードウェア・セキュリティ・モジュールがサポートされています。

通常、これらのハードウェア・デバイスは、トークンまたはスマートカードの秘密鍵を安全に格納および管理するため、または暗号処理を高速化するために使用されます。

内容は次のとおりです。

SSLでハードウェア・セキュリティ・モジュールを使用するための一般的なガイドライン

Oracle Databaseでハードウェア・セキュリティ・モジュールを使用する場合は、次のガイドラインに従ってください。

  1. 必要なハードウェア、ソフトウェアおよびPKCS #11ライブラリを取得するには、ハードウェア・デバイス・ベンダーにお問い合せください。

  2. 使用しているハードウェア・セキュリティ・モジュールに適したハードウェア、ソフトウェアおよびライブラリをインストールします。

  3. ハードウェア・セキュリティ・モジュールのインストールをテストして、正常に動作することを確認します。詳細は、使用するデバイスのドキュメントを参照してください。

  4. 秘密鍵をトークンに格納する場合は、Oracle Wallet Managerを使用してPKCS11タイプのウォレットを作成し、PKCS #11ライブラリへの絶対パス(ライブラリ名を含む)を指定します。Oracle PKCS11ウォレットには、秘密鍵にアクセスするためのトークンを指す情報が格納されます。

PKCS #11情報が格納されたウォレットは、任意のOracleウォレットを使用する場合と同様に使用できます。ただし、秘密鍵をハードウェア・デバイスに格納し、暗号操作もそのデバイスで実行する場合を除きます。

関連項目:

ハードウェア・セキュリティ・モジュールの証明書を格納するためにOracleウォレットを作成する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

暗号化処理でnCipherハードウェア・セキュリティ・モジュールを使用するようにシステムを構成できます。

内容は次のとおりです。

nCipherハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

nCipher社製のハードウェア・セキュリティ・モジュールは、Oracle Databaseで動作することが証明されています。

これらのモジュールでは、鍵を安全に格納し、暗号処理の負荷を軽減できます。これらのデバイスには、主に次の利点があります。

  • 暗号処理の負荷が軽減され、サーバーが他の要求に応答できるようになります。

  • デバイス上の秘密鍵の記憶領域が保護されます。

  • スマートカードを使用して鍵を管理できます。

注意:

Oracle Databaseで使用する認定済のハードウェアおよびソフトウェアを入手するには、nCipherの代理店にお問い合せください。

nCipherハードウェア・セキュリティ・モジュールに必要なOracleコンポーネント

nCipherハードウェア・セキュリティ・モジュールを使用するには、特別なコンポーネントのセットが必要です。

これらのコンポーネントは次のとおりです。

  • nCipherハードウェア・セキュリティ・モジュール

  • サポートしているnCipher PKCS #11ライブラリ

    次のプラットフォーム固有のPKCS#11ライブラリが必要です。

    • libcknfast.soライブラリ(UNIX 32ビットの場合)

    • libcknfast-64.soライブラリ(UNIX 64ビットの場合)

    • cknfast.dllライブラリ(Windowsの場合)

注意:

ハードウェア・セキュリティ・モジュールまたはセキュア・アクセラレータをインストールし、必要なライブラリを入手するには、nCipherの代理店にお問い合せください。

これらの作業は、Oracle DatabaseでnCipherハードウェア・セキュリティ・モジュールを使用する前に実施する必要があります。

nCipherハードウェア・セキュリティ・モジュールをインストールするためのディレクトリ・パス要件

nCipherハードウェア・セキュリティ・モジュールはnCipher PKCS #11ライブラリを使用します。

セキュア・アクセラレータを使用するには、Oracle Wallet Managerを使用してウォレットを作成するときに、nCipher PKCS #11ライブラリが格納されているディレクトリへの絶対パス(ライブラリ名を含む)を指定する必要があります。これにより、実行時にライブラリをロードできます。

通常、nCipherカードは次の場所にインストールされます。

  • /opt/nfast (UNIXの場合)

  • C:\nfast (Windowsの場合)

nCipher PKCS #11ライブラリは、通常のインストールでは次の場所に配置されます。

  • /opt/nfast/toolkits/pkcs11/libcknfast.so(UNIX 32ビットの場合)

  • /opt/nfast/toolkits/pkcs11/libcknfast-64.so(UNIX 64ビットの場合)

  • C:\nfast\toolkits\pkcs11\cknfast.dll (Windowsの場合)

注意:

Oracle Databaseの32ビット・リリースを使用する場合は32ビット・ライブラリ・バージョンを使用し、Oracle Databaseの64ビット・リリースを使用する場合は64ビット・ライブラリ・バージョンを使用します。たとえば、Oracle Database for Solaris Operating System (SPARC 64ビット)には、64ビットnCipher PKCS #11ライブラリを使用します。

SafeNETハードウェア・セキュリティ・モジュールを使用するためのシステムの構成

暗号化処理でSafeNETハードウェア・セキュリティ・モジュールを使用するようにシステムを構成できます。

内容は次のとおりです。

SafeNETハードウェア・セキュリティ・モジュールを使用するためのシステムの構成について

SafeNET社製のハードウェア・セキュリティ・モジュールは、Oracle Databaseで動作することが証明されています。

これらのモジュールでは、鍵を安全に格納し、暗号処理の負荷を軽減できます。これらのデバイスには、主に次の利点があります。

  • 暗号処理の負荷が軽減され、サーバーが他の要求に応答できるようになります。

  • デバイス上の秘密鍵の記憶領域が保護されます。

注意:

Oracle Databaseで使用する認定済のハードウェアおよびソフトウェアを入手するには、SafeNETの代理店にお問い合せください。

SafeNET Luna SAハードウェア・セキュリティ・モジュールに必要なOracleコンポーネント

SafeNET Luna SAハードウェア・セキュリティ・モジュールを使用するには、特別なコンポーネントのセットが必要です。

これらのコンポーネントは次のとおりです。

  • SafeNET Luna SAハードウェア・セキュリティ・モジュール

  • サポートしているSafeNET Luna SA PKCS #11ライブラリ

    次のプラットフォーム固有のPKCS#11ライブラリが必要です。

    • libCryptoki2.soライブラリ(UNIXの場合)

    • cryptoki.dllライブラリ(Windowsの場合)

注意:

ハードウェア・セキュリティ・モジュールまたはセキュア・アクセラレータをインストールし、必要なライブラリを入手するには、SafeNETの代理店にお問い合せください。

これらの作業は、Oracle DatabaseでSafeNETハードウェア・セキュリティ・モジュールを使用する前に実施する必要があります。

SafeNETハードウェア・セキュリティ・モジュールをインストールするためのディレクトリ・パス要件

SafeNETハードウェア・セキュリティ・モジュールはSafeNET PKCS #11ライブラリを使用します。

セキュア・アクセラレータを使用するには、Oracle Wallet Managerを使用してウォレットを作成するときに、SafeNET PKCS #11ライブラリが格納されているディレクトリへの絶対パス(ライブラリ名を含む)を指定する必要があります。これにより、実行時にライブラリをロードできます。

通常、SafeNET Luna SAクライアントは次の場所にインストールされます。

  • /usr/lunasa (UNIXの場合)

  • C:\Program Files\LunaSA (Windowsの場合)

SafeNET Luna SA PKCS #11ライブラリは、通常のインストールでは次の場所に配置されます。

  • /usr/lunasa/lib/libCryptoki2.so (UNIXの場合)

  • C:\Program Files\LunaSA\cryptoki2.dll (Windowsの場合)

ハードウェア・セキュリティ・モジュールの使用時のトラブルシューティング

ハードウェア・セキュリティ・モジュールに関するトラブルシューティングのアドバイスを提供します。

内容は次のとおりです。

Oracle Netトレース・ファイルのエラー

使用されているモジュールを検出するには、Oracle Netトレースをオンにします。

ウォレットにPKCS #11情報が含まれ、モジュールの秘密鍵が使用されている場合は、Oracle Netトレースに次のエントリが記録され、entryexitの間にエラー・メッセージは記録されません。

nzpkcs11_Init: entry
nzpkcs11CP_ChangeProviders: entry
nzpkcs11CP_ChangeProviders: exit
nzpkcs11GPK_GetPrivateKey: entry
nzpkcs11GPK_GetPrivateKey: exit
nzpkcs11_Init: exit
...
nzpkcs11_Decrypt: entry
nzpkcs11_Decrypt: exit

nzpkcs11_Sign: entry
nzpkcs11_Sign: exit

関連項目:

トレース・パラメータを設定してOracle Netトレースを有効にする方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

ハードウェア・セキュリティ・モジュールの使用に関連するエラー・メッセージ

PKCS #11ハードウェア・セキュリティ・モジュールの使用に関連するエラーが表示される場合があります。

ORA-43000: PKCS11ライブラリが見つかりません

原因: ウォレットの作成時に指定された場所にPKCS #11ライブラリが見つかりません。これは、ウォレットの作成後にライブラリが移動された場合にのみ発生します。

処置: PKCS #11ライブラリをウォレットが作成されたときの場所にコピーします。

ORA-43001: PKCS11トークンが見つかりません

原因: ウォレットの作成に使用されたスマートカードがハードウェア・セキュリティ・モジュールのスロットにありません。

処置: ウォレットの作成時に使用されたスマートカードがハードウェア・セキュリティ・モジュールのスロットにあることを確認します。

ORA-43002: PKCS11パスワードが無効です

原因: これは、ウォレットの作成時に指定されたパスワードが正しくない場合、またはウォレットの作成後にPKCS #11デバイス・パスワードを変更し、Oracle Wallet Managerを使用してウォレットで更新しなかった場合に発生する可能性があります。

処置: 原因に応じて、次のいずれかの処置を行います。

ウォレットの作成時にこのエラーが表示された場合は、パスワードが正しいことを確認し、再入力します。

ウォレットの作成後にパスワードを変更した場合は、Oracle Wallet Managerを使用してウォレットを開き、新しいパスワードを入力します。

関連項目:

ハードウェア・セキュリティ証明書を格納するためにOracleウォレットを作成する方法の詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。

注意:

nCipherログ・ファイルは、モジュールがインストールされているディレクトリの次の場所にあります。

/log/logfile

関連項目:

nCipherデバイスとSafeNETデバイスのトラブルシューティングの詳細は、nCipherとSafeNETのドキュメントを参照してください。