ヘッダーをスキップ
Oracle Database Advanced Security管理者ガイド
11g リリース1(11.1)
E05729-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

8 Secure Sockets Layer認証の構成

この章では、Oracle Advanced SecurityでサポートされているSecure Sockets Layer(SSL)およびTransport Layer Security(TLS)プロトコルの構成および使用方法について説明します。次の項目について説明します。

8.1 Oracle環境におけるSSLとTLS

Secure Sockets Layer(SSL)は、ネットワーク接続を保護するためにNetscape社が最初に開発した業界標準プロトコルです。SSLはRSA公開鍵暗号と対称鍵暗号化を併用して、認証、暗号化およびデータの整合性を実現します。

この項では、次の内容について説明します。

8.1.1 SSLとTLSの違い

SSLは主にNetscape社によって開発されましたが、Internet Engineering Task Force(IETF)がその開発を引き継ぎ、Transport Layer Security(TLS)という名前に変更しました。基本的に、TLSはSSLバージョン3.0を段階的に改良したものです。


関連項目:


『The TLS Protocol Version 1.0』[RFC 2246]は、次のIETFのWebサイトで入手できます。
http://www.ietf.org


注意:


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

8.1.2 SSLの使用

Oracle Advanced Securityは、これらのプロトコルに固有の暗号化やデータ整合性の機能に加え、SSLを介したデジタル証明の使用による認証をサポートしています。

Oracle Advanced SecurityのSSL機能を使用して、クライアントとサーバーとの通信を保護することにより、次のことが可能になります。

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

  • SSLを介して通信するように構成されている任意のOracle Databaseサーバーに対して、Oracle Application Server 10g などのクラインアントまたはサーバーを認証

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

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

  • クライアントとサーバーの両方が互いに対して認証を行います。

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


    関連項目:

    • SSLの詳細は、IETF(Internet Engineering Task Force)発行の『The SSL Protocol, Version 3.0』を参照してください。

    • 認証方式の詳細は、第1章「Oracle Advanced Securityの概要」を参照してください。


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

SSLを介してネットワーク接続を開始する場合、クライアントとサーバーではSSLハンドシェイクが実行されます。SSLハンドシェイクには、次の手順が含まれます。

  • クライアントとサーバーで使用する暗号スイートを確立します。この暗号スイートには、データ転送に使用する暗号化アルゴリズムが含まれます。

  • サーバーはサーバーの証明書をクライアントに送信し、クライアントは、サーバーの証明書が信頼できるCAによって署名されていることを確認します。この手順によってサーバーの識別情報が検証されます。

  • クライアントの認証が必要な場合は、同様に、クライアントがクライアントの証明書をサーバーに送信し、サーバーはクライアントの証明書が信頼できるCAによって署名されていることを確認します。

  • クライアントとサーバーは公開鍵暗号を使用して鍵情報を交換します。この情報に基づいて、それぞれセッション鍵を生成します。これ以降、クライアントとサーバー間のすべての通信は、1組のセッション鍵と折衝済の暗号スイートを使用して暗号化および復号化されます。

認証手続きは次の手順で実行されます。

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

  2. SSLによってクライアントとサーバー間のハンドシェイクが実行されます。

  3. ハンドシェイクに成功した場合は、ユーザーがデータベースにアクセスするのに適切な認可を持っていることをサーバーが確認します。

8.2 Oracle環境での公開鍵インフラストラクチャ

公開鍵インフラストラクチャ(PKI)は、組織全体に対して、トラスト・アサーションをベースにしてセキュリティ基盤を提供するネットワーク・コンポーネントの基礎です。PKIは、異なるネットワーク・エンティティが、必要に応じて公開鍵暗号を使用するセキュリティ・サービスにアクセスできるようにするために存在します。オラクル社は、RSA Security社の公開鍵暗号標準に基づいた完全なPKIを提供します。これはOracleサーバーおよびクライアントに組み込まれています。

8.2.1 公開鍵暗号について

従来の秘密鍵または対称鍵の暗号化では、安全な通信を行うために、2者以上で共有される単一の秘密鍵が必要です。この鍵は、関係者間で送信される安全なメッセージの暗号化と復号化に使用されます。そのため、各関係者にあらかじめ鍵が安全に配布されている必要があります。この方法の問題点は、鍵を安全に送信して格納することが困難なことです。

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

公開鍵アルゴリズムはメッセージの機密性を保証できますが、通信関係者の識別情報は検証しないため、安全な通信は必ずしも保証されません。安全な通信を確立するには、メッセージの暗号化に使用される公開鍵が、実際に宛先の受信者に属していることを検証することが重要です。この検証を行わないと、第三者が通信を盗聴して公開鍵要求を傍受し、その公開鍵を合法的な別の鍵に置き換える可能性があります(介在者による攻撃)。

このような攻撃を回避するために、認証と呼ばれるプロセスで公開鍵の所有者を検証する必要があります。認証は、通信する双方の関係者が信頼している第三者機関である認証局(CA)を介して実行できます。

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

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

8.2.2 Oracle環境での公開鍵インフラストラクチャ・コンポーネント

Oracle環境における公開鍵インフラストラクチャ(PKI)コンポーネントには次のものがあります。

8.2.2.1 認証局

認証局(Certificate Authority: CA)は、エンティティ(ユーザー、データベース、管理者、クライアント、サーバーなど)の識別情報を証明する信頼できる第三者機関のことです。エンティティが認証を要求すると、CAはその識別情報を確認し、CAの秘密鍵によって署名されている証明書を付与します。

証明書を発行する際に必要になる個人情報は、CAごとに異なる場合があります。請求者の識別情報を運転免許証、あるいは請求者の指紋で確認するCAがある一方で、請求者が標準化されている証明書要求書式を保有していることを要求するCAもあります。

認証局では、認証局の公開鍵を含んだ自分自身の証明書を公開します。各ネットワーク・エンティティには信頼できるCA証明書のリストがあります。通信を開始する前に、ネットワーク・エンティティは証明書を交換して、お互いの証明書が、それぞれ信頼できるCA証明書のリストに記載されているCAの1つによって署名されていることを確認します。

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

Oracle Identity Managementインフラストラクチャの一部であるOracle Application Server Certificate Authorityは、Oracle Application Server 10g(9.0.4)で入手できる新しいOracle PKIコンポーネントです。


関連項目:


「ウォレット」

8.2.2.2 証明書

証明書は、エンティティの公開鍵が信頼できる認証局(CA)によって署名されたときに作成されます。この証明書は、そのエンティティの認証情報が正しいこと、および公開鍵がそのエンティティに実際に属していることを保証します。

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

ネットワーク・エンティティが証明書を受け取ったとき、エンティティでは証明書が信頼できる証明書であること、つまり、信頼できる認証局が発行し、署名した証明書であることを確認します。証明書は、有効期限が切れるまで、または取り消されるまで有効です。

8.2.2.3 証明書失効リスト

一般的に、CAが、ユーザー識別情報に公開鍵ペアがバインドされている証明書に署名すると、その証明書はある一定期間有効です。ただし、ユーザー名の変更や複合秘密鍵のような特定の事柄では、有効期限が来る前に証明書を無効にできます。この場合、CAは証明書を取り消し、証明書失効リスト(CRL)にそのシリアル番号を追加します。CAは、特定の公開鍵が関連するユーザー識別情報の確認に使用できなくなった場合に、定期的にCRLを発行して、ユーザーに警告します。

サーバーまたはクライアントは、Oracle環境でユーザー証明書を受け取ると、有効期限、署名、取消しステータスをチェックすることにより、その証明書を検証できます。証明書の取消しステータスは、公開されているCRLに照らしあわせて確認されます。証明書の取消しステータス・チェックを開始すると、サーバーは、この機能の設定状況に応じた適切なCRLを検索します。サーバーは次の場所にあるCRLを検索します。

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

  2. Oracle Internet Directory

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


    関連項目:


    このPKIコンポーネントの構成と管理に関する情報は、「証明書失効リストによる証明書の検証」を参照してください。


注意:


他のOracle製品でCRLを使用する場合、その製品のマニュアルを参照してください。CRLによる証明書の検証の実装は、Oracle Database 11g リリース1(11.1)のSSLアダプタでのみ使用できます。

8.2.2.4 ウォレット

ウォレットは、秘密鍵、証明書およびSSLに必要な信頼できる証明書も含めて、認証および署名された資格証明の格納に使用されるコンテナです。Oracle環境でSSLを介して通信する各エンティティには、X.509バージョン3の証明書、秘密鍵および信頼できる証明書の一覧を含むウォレットが必要です(Diffie-Hellmanを除く)。

セキュリティ管理者は、Oracle Wallet Managerを使用してサーバーのセキュリティ資格証明を管理します。ウォレットの所有者は、クライアントのセキュリティ資格証明の管理にOracle Wallet Managerを使用します。特に、次の操作を行う場合は、Oracle Wallet Managerを使用します。

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

Oracle Advanced Securityは、次の機能にこのデバイスを使用します。

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

  • 他のトランザクションに応答するためにCPUを解放することにより、RSA処理をサーバーからオフロードする暗号処理の実行

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

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

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

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


注意:


現在、SafeNET社およびnCipher社のデバイスがOracle Advanced Securityで認証されています。

8.3 SSLと他の認証方式の併用

SSLをデータベースのユーザー名とパスワード、RADIUSおよびKerberosと併用するように、Oracle Advanced Securityを構成できます。これについては次の項で説明します。

8.3.1 アーキテクチャ: Oracle Advanced SecurityとSSL

図1-4は、Oracle Advanced Securityの実装アーキテクチャです。この図は、Oracle Advanced Securityが、SSLの最上部のセッション・レイヤーで動作し、トランスポート・レイヤーのTCP/IPを使用することを示しています。この機能の分離によって、サポートされている他のプロトコルとSSLを併用できます。


関連項目:


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

8.3.2 SSLと他の認証方式の併用方法

図8-1は、SSLがOracle Advanced Securityでサポートされている他の認証方式と併用される場合の構成を示しています。

図8-1 SSLと他の認証方式との関係

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

この例では、SSLを使用して初期ハンドシェイク(サーバー認証)を確立し、別の認証方式を使用してクライアントを認証します。

  1. クライアントがOracle Databaseサーバーに接続を要求します。

  2. SSLがハンドシェイクを実行します。このハンドシェイク中、サーバーはクライアントに対して認証し、クライアントとサーバーは使用する暗号スイートを確立します。

  3. SSLハンドシェイクが正常に完了すると、ユーザーがデータベースへのアクセスを要求します。

  4. Oracle Databaseサーバーは、KerberosまたはRADIUSなどの非SSL認証方式を使用して、ユーザーを認証サーバーで認証します。

  5. 認証サーバーの検証に基づき、Oracle Databaseサーバーがユーザーにアクセス権と認可を付与し、ユーザーは、SSLを使用してデータベースに安全に接続できます。

8.4 SSLとファイアウォール

Oracle Advanced Securityは、次の2つのタイプのファイアウォールをサポートしています。

SSLを使用可能にすると、ステートフル・インスペクション型のファイアウォールはアプリケーション・プロキシ型のファイアウォールと同じように動作します。これは、ステートフル・インスペクション型のファイアウォールが暗号化パケットを復号化しないためです。

ファイアウォールは、暗号化された通信を検査しません。ファイアウォールは、イントラネット・サーバーのSSLポート宛てのデータを検出すると、アクセス・ルールに基づいてターゲットのIPアドレスをチェックします。アクセス・ルールでは、特定のSSLポートへの接続を許可されているSSLパケットが規定されており、その他のパケットはすべて拒否されます。

いくつかのファイアウォール・ベンダーにより提供されている製品のOracle Netファイアウォール・プロキシ・キットにより、ファイアウォール・アプリケーションでは、データベースのネットワーク通信に対して固有のサポートが提供されます。ファイアウォールにこのプロキシ・キットが実装されていると、次の処理が発生します。

Oracle Connection Managerを使用すると、複数のOracle Netプロトコル上のクライアント接続をルート指定できます。各クライアント接続要求によって、そのクライアントとOracle Connection Managerの間にSSL接続が確立され、次に、ターゲット・データベースとの間にTCP/IP接続が確立されます。複数のクライアントは、ファイアウォールを通過する単一のSSLポートを使用して、ファイアウォールの内側にある複数のデータベースに接続できます。


注意:


Oracle Connection Managerを使用すると、ファイアウォールを通過する複数のSSLポートが開かれないようにできますが、次の点を考慮する必要があります。
  • Oracle Connection Managerとデータベース間の内部接続は、SSL接続ではありません。そのため、Oracle Advanced Security固有の暗号化を使用して内部接続を暗号化してください。

  • 内部接続でSSLが使用されていないため、クライアントで証明書ベースの認証を使用できません。



関連項目:


Oracle Connection Managerの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

8.5 SSL使用時の問題

SSLを使用する際には次の問題を考慮してください。


注意:

  • 米国政府の条例によって、二重暗号化は禁止されています。したがって、SSL暗号化と別の暗号化方式を併用するようにOracle Advanced Securityを構成すると、接続に失敗します。また、SSL認証と非SSL認証を併用するように構成することもできません。

  • SSL暗号化を構成する場合は、SSL以外の暗号化を使用禁止にする必要があります。このような暗号化を使用禁止にするには、「Oracle Advanced Security認証の使用禁止」を参照してください。



関連項目:


8.6 SSLを使用可能にする

SSLを使用可能にするには、次のタスクを実行します。

8.6.1 タスク1: Oracle Advanced Securityと関連製品のインストール

クライアントとサーバーの両方でOracle Advanced Securityをインストールします。このときに、Oracle Universal Installerによって、SSLライブラリおよびOracle Wallet Managerがコンピュータに自動的にインストールされます。


関連項目:


プラットフォーム固有のOracle Databaseインストレーション・ガイド

8.6.2 タスク2: サーバーでのSSLの構成

インストール時に、Oracle DatabaseサーバーとOracleクライアントで、Oracleウォレットの位置を除くすべてのSSLパラメータにデフォルトが設定されます。 サーバーでSSLを構成するには、次の手順を実行します。

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

次の手順に進む前に、ウォレットが作成されていることを確認してください。ウォレットが作成されていることを確認するには、Oracle Wallet Managerを使用してウォレットを開きます。ウォレットには、Ready状態の証明書が含まれていること、および自動ログインがオンになっていることが必要です。自動ログインがオンでない場合、「ウォレット」メニューからそれを選択して、ウォレットを再保存します。これで自動ログインがオンになります。

8.6.2.2 手順2: サーバーにおけるデータベース・ウォレット・ロケーションの指定

サーバーに必要な構成パラメータを指定するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照してください)。

  1. Oracle Advanced Securityプロファイルにナビゲートします。(「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。「Oracle Advanced Security」ウィンドウの「SSL」タブが表示されます。(図8-5

  2. 「SSL」タブをクリックして、「SSL構成: サーバー」を選択します。

  3. ウォレット・ディレクトリ」ボックスに、Oracleウォレットが格納されているディレクトリを入力するか、「参照」をクリックして、ファイル・システムからそのディレクトリを探します。

    Enterprise User Securityに、データベースからディレクトリへのSSL接続を構成している場合、そのディレクトリにデータベースを登録している間に、Database Configuration Assistantが自動的にデータベース・ウォレットを作成します。SSL認証Enterprise User Securityに対しては、そのウォレットを使用してデータベースPKI資格証明を格納する必要があります。


    重要:

    • Oracle Wallet Managerを使用して、ウォレットを作成してください。「ウォレットの新規作成」を参照してください。

    • Oracle Net Managerを使用して、sqlnet.oraファイルにウォレット・ロケーションを指定してください。

    ウォレットを作成するとき、およびsqlnet.oraファイル内の位置を設定するときは、必ず同じウォレット・ロケーションを入力してください。


  1. ファイル」→「ネットワーク構成の保存」を選択します。

    次のエントリにより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を編集して新しい位置を入力します。


8.6.2.3 手順3: SSL暗号スイートのサーバーへの設定(オプション)

暗号スイートは、ネットワークのエンティティ間でメッセージを交換するのに使用する認証、暗号化およびデータ整合性アルゴリズムを一組にしたものです。SSLハンドシェイク時に、2つのエンティティ間で折衝し、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Advanced Securityをインストールすると、表8-1にリストされているSSL暗号スイートがデフォルトで設定され、リストされている順番に折衝されます。SSL_CIPHER_SUITESパラメータを設定して、デフォルトの順番を上書きできます。たとえば、Oracle Net Managerを使用して暗号スイートにSSL_RSA_WITH_RC4_128_SHAを追加すると、デフォルトで設定された他のすべての暗号スイートは無視されます。

暗号スイートは優先順位を設定できます。クライアントとサーバーで使用する暗号スイートについて折衝するとき、設定した優先順位に従って行われます。暗号スイートの優先順位を設定するときは、次の点を考慮します。

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

  • Cipherの優先順位と強度。できるだけ高度なセキュリティを確保するため、暗号スイートの優先順位を強力なものから順に設定します。

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

  • パフォーマンスへの影響。たとえば、Triple-DES暗号化はDESよりも時間がかかります。


    注意:


    Diffie-Hellman匿名認証について:
    1. この暗号スイートを使用するようにサーバーを設定する場合は、クライアントにも同じ暗号スイートを設定する必要があります。使用禁止にしないと接続できません。

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

    3. クライアントを認証しないDH_ANONで暗号スイートを使用する場合でも、OCIクライアントでウォレットが必要になるという不具合が報告されています。


表8-1は、現行のリリースのOracle Advanced SecurityでサポートされているSSL暗号スイートのリストです。これらの暗号スイートは、Oracle Advanced Securityをインストールしたときにデフォルトで設定されます。この表には、暗号スイートで使用される認証、暗号化およびデータ整合性の種類もあわせて記載しています。

表8-1 Oracle Advanced Securityの暗号スイート

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

SSL_RSA_WITH_3DES_EDE_CBC_SHA

RSA

3DES EDE CBC

SHA-1

SSL_RSA_WITH_RC4_128_SHA

RSA

RC4 128

SHA-1

SSL_RSA_WITH_RC4_128_MD5

RSA

RC4 128

MD5

SSL_RSA_WITH_DES_CBC_SHA

RSA

DES CBC

SHA-1

SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

DH匿名

3DES EDE CBC

SHA-1

SSL_DH_anon_WITH_RC4_128_MD5

DH匿名

RC4 128

MD5

SSL_DH_anon_WITH_DES_CBC_SHA

DH匿名

DES CBC

SHA-1

SSL_RSA_EXPORT_WITH_RC4_40_MD5

RSA

RC4 40

MD5

SSL_RSA_EXPORT_WITH_DES40_CBC_SHA

RSA

DES40 CBC

SHA-1

SSL_RSA_WITH_AES_128_CBC_SHA脚注 1 

RSA

AES 128 CBC

SHA-1

SSL_RSA_WITH_AES_256_CBC_SHA脚注1

RSA

AES 256 CBC

SHA-1


脚注 1 AES Cipherは、Transport Layer Security(TLS 1.0)のみで動作します。

サーバーに暗号スイートを指定する手順は次のとおりです。

  1. 追加」をクリックします。ダイアログ・ボックスに使用可能な暗号スイートが表示されます(図8-2)。

図8-2 SSL暗号スイート・ウィンドウ

図8-2の説明は次にあります。
「図8-2 SSL暗号スイート・ウィンドウ」の説明

  1. 暗号スイートを1つ選択して、「OK」をクリックします。「暗号スイートの構成」リストが更新されます(図8-3)。

図8-3 Oracle Advanced Securityの「SSL」ウィンドウ(サーバー)

図8-3の説明は次にあります。
「図8-3 Oracle Advanced Securityの「SSL」ウィンドウ(サーバー)」の説明

  1. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。

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

    SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])
    

8.6.2.4 手順4: 必要なSSLバージョンのサーバーでの設定(オプション)

sqlnet.oraファイルにSSL_VERSIONパラメータを設定できます。このパラメータは、サーバーの通信先のシステムで実行される必要があるSSLのバージョンを定義します。これらのシステムに任意の有効なバージョンを使用するように要求できます。sqlnet.ora内のこのパラメータのデフォルト設定はundeterminedです。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストで「任意」を選択することによって設定されます。

サーバーにSSLのバージョンを設定する手順は次のとおりです。

  1. 「必要なSSLバージョン」リストでは、デフォルトは「任意」に設定されています。このデフォルトをそのまま使用するか、使用するSSLのバージョンを選択します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。

    任意」を選択すると、sqlnet.oraファイルが更新され、次のエントリが追加されます。

    SSL_VERSION=UNDETERMINED
    

    注意:


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

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

クライアント認証でSSLを使用するかどうかはsqlnet.oraファイル内のSSL_CLIENT_AUTHENTICATIONパラメータで制御します。デフォルト値はTRUEです。

Diffie-Hellman匿名認証(DH_anon)を含む暗号スイートを使用する場合は、このパラメータをFALSEに設定する必要があります。また、サーバーに対してクライアントが認証するときに、KerberosやRADIUSなど、Oracle Advanced Securityでサポートされている非SSL認証方式を使用する場合にも、このパラメータをFALSEに設定する必要があります。


注意:


クライアントを認証しないDH_ANONで暗号スイートを使用する場合でも、OCIクライアントでウォレットが必要になるという不具合が報告されています。

サーバーでSSL_CLIENT_AUTHENTICATIONをFALSEに設定する手順は次のとおりです。

図8-4 「Oracle Advanced Security」ウィンドウの「SSL」ウィンドウ(サーバー)

図8-4の説明は次にあります。
「図8-4 「Oracle Advanced Security」ウィンドウの「SSL」ウィンドウ(サーバー)」の説明

  1. クライアントの認証が必要」の選択を解除します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。

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

    SSL_CLIENT_AUTHENTICATION=FALSE
    

8.6.2.6 手順6: サーバーにおけるSSLの認証サービスとしての設定(オプション)

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

SSL認証をOracle Advanced Securityでサポートされる他の認証方式と併用する場合は、このパラメータを設定します。たとえば、サーバーがクライアントに対してサーバー自体を認証するときはSSLを使用し、クライアントがサーバーに対してクライアント自体を認証するときにKerberosを使用する場合は、このパラメータを使用します。

サーバーにSQLNET.AUTHENTICATION_SERVICESパラメータを設定する手順は次のとおりです。

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

 SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)

SSL認証と別の認証方式を併用しない場合は、このパラメータを設定しないでください。

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

listener.oraファイル内にSSL付きTCP/IPのリスニング・エンドポイントを指定して、リスナーを構成します。一般的なOracle Netクライアントにはポート番号2484を使用することをお薦めします。


関連項目:

  • listener.oraファイルの構成の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

  • 証明書失効リストで証明書を検証するようにシステムを構成する方法は、「証明書失効リストによる証明書の検証」を参照してください。


8.6.3 タスク3: クライアントでのSSLの構成

クライアントでSSLを構成する手順は次のとおりです。

8.6.3.1 手順1: クライアントのウォレット作成の確認

次の手順に進む前に、クライアントでウォレットが生成されており、そのクライアントに有効な証明書があることを確認する必要があります。


注意:


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


関連項目:


8.6.3.2 手順2: サーバーDNの組込みと、クライアントのSSL付きTCP/IPの使用を指定するOracleネット・サービス名の構成

クライアントのネットワーク構成ファイルに、サーバーの識別名(DN)と、プロトコルとしてTCPSを指定し、サーバーのDNの照合とSSL付きTCP/IP接続を有効にする必要があります。サーバーDN照合では、サーバーのグローバル・データベース名とサーバーの証明書のDNを照合することにより、接続中にデータベース・サーバーがクライアントに識別情報を偽らないようにします。

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

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

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

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とそのサービス名との照合を行います。例8-1は、tnsnames.oraファイル内のFinanceデータベースのエントリを示しています。

または、サーバーのDNにある共通名(CN)の部分がサービス名と一致していることを、管理者が保証するという方法もあります。

  1. クライアントのtnsnames.oraファイルで、ADDRESSパラメータのPROTOCOLとしてtcpsを入力します。これは、クライアントがSSL付きTCP/IPを使用して、SERVICE_NAMEパラメータで指定されたデータベースに接続することを指定します。例8-1は、SSL付きTCP/IPを接続プロトコルとして指定しているtnsnames.oraファイルのエントリも示しています。

  2. listener.oraファイルで、ADDRESSパラメータのPROTOCOLとしてtcpsを入力します。例8-2は、SSL付きTCP/IPをプロトコルとして指定しているエントリを示しています。

例8-1 サーバー証明書のDNとSSL付きTCP/IPを指定するサンプルのtnsnames.oraファイル

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

例8-2 プロトコルとしてSSL付きTCP/IPを指定するサンプルのlistener.oraファイル

LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS= (PROTOCOL = tcps) (HOST = finance_server) (PORT = 1575))))
 

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

クライアントに必要な構成パラメータを指定するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照してください)。

  1. Oracle Advanced Securityプロファイルにナビゲートします。(「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。「Oracle Advanced Security」ウィンドウの「SSL」タブが表示されます(図8-5)。

図8-5 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)

図8-5の説明は次にあります。
「図8-5 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)」の説明

  1. SSL」タブをクリックします。

  2. SSL構成: クライアント」を選択します。

  3. 「ウォレット・ディレクトリ」ボックスに、Oracleウォレットが格納されているディレクトリを入力するか、「参照」をクリックして、ファイル・システムからそのディレクトリを探します。

  4. 「サーバーX.509の名前に一致」リストから、次のいずれかのオプションを選択します。

    • はい: サーバーの識別名(DN)とサービス名が一致する必要があります。SSLによって、証明書がサーバーのものであることが保証され、DNとサービス名が一致した場合のみ、接続が成功します。


      注意:


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

    • いいえ(デフォルト): SSLはDNとサービス名が一致しているかチェックしますが、その結果は使用されません。照合結果にかかわらず、接続は成功します。ただし、一致していない場合はエラーが記録されます。

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


      注意:


      「いいえ」を選択すると、次の警告が表示されます。

      セキュリティ・アラート

      サーバーX.509の名前の照合を行わないと、サーバーが自身の識別情報を偽る可能性があります。 このオプションでは、不一致がある場合は接続が拒否されるように「はい」を選択することをお薦めします。


  5. ファイル」→「ネットワーク構成の保存」を選択します。

    クライアントで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リファレンス・ガイド』


8.6.3.4 手順4: クライアントのSSL暗号スイートの設定(オプション)

暗号スイートは、ネットワークのエンティティ間でメッセージを交換するのに使用する認証、暗号化およびデータ整合性アルゴリズムを一組にしたものです。SSLハンドシェイク時に、2つのエンティティ間で折衝し、メッセージを送受信するときに使用する暗号スイートを確認します。

Oracle Advanced Securityをインストールすると、表8-1にリストされているSSL暗号スイートがデフォルトで設定されます。この表は、2つのエンティティで接続が折衝される際に使用される順番でSSL暗号スイートを表示しています。SSL_CIPHER_SUITESパラメータを設定して、デフォルトを上書きできます。たとえば、Oracle Net Managerを使用して暗号スイートにSSL_RSA_WITH_RC4_128_SHAを追加すると、デフォルトで設定された他のすべての暗号スイートは無視されます。

暗号スイートは優先順位を設定できます。クライアントとサーバーで使用する暗号スイートについて折衝するとき、設定した優先順位に従って行われます。暗号スイートの優先順位を設定するときは、次の点を考慮します。

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

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

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

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

表8-1は、現行のリリースのOracle Advanced SecurityでサポートされているSSL暗号スイートのリストです。これらの暗号スイートは、Oracle Advanced Securityをインストールしたときにデフォルトで設定されます。この表には、各暗号スイートで使用される認証、暗号化およびデータ整合性の種類もあわせて記載しています。


注意:


sqlnet.oraファイルでSSL_CLIENT_AUTHENTICATIONパラメータがTRUEに設定されている場合は、Diffie-Hellman匿名認証を使用するすべての暗号スイートを使用禁止にします。使用禁止にしないと接続できません。

クライアントの暗号スイートを指定する手順は、次のとおりです。

  1. 「暗号スイートの構成」で、「追加」をクリックします。使用可能な暗号スイートを示すダイアログ・ボックスが表示されます(図8-2)。

  2. 暗号スイートを1つ選択して、「OK」をクリックします。「暗号スイートの構成」リストが更新されます(図8-6)。

図8-6 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)

図8-6の説明は次にあります。
「図8-6 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)」の説明

  1. 上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。

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

    SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])
    

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

sqlnet.oraファイルにSSL_VERSIONパラメータを設定できます。このパラメータは、クライアントの通信先のシステムで実行される必要があるSSLのバージョンを定義します。これらのシステムに任意の有効なバージョンを使用するように要求できます。sqlnet.oraのこのパラメータのデフォルト設定はundeterminedです。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストで「任意」を選択することによって設定されます。「任意」が選択されている場合、TLS 1.0が最初に試され、次にSSL 3.0とSSL 2.0が順番に試されます。クライアントのSSLのバージョンは、サーバーが使用しているバージョンと互換性があることを確認します。

クライアントに必要なSSLのバージョンを設定する手順は次のとおりです。

  1. 必要なSSLバージョン」リストでは、デフォルトは「任意」に設定されています。このデフォルトをそのまま使用するか、設定するSSLのバージョンを選択します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。

    sqlnet.oraファイルが更新されます。「任意」を選択すると、ファイルが更新され、次のエントリが追加されます。

    SSL_VERSION=UNDETERMINED
    

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

sqlnet.oraファイル内のSQLNET.AUTHENTICATION_SERVICESパラメータで、SSL認証サービスを設定します。一般的に、sqlnet.oraファイルは他のネットワーク構成ファイルと同じディレクトリに配置されています。使用しているプラットフォームに応じて、sqlnet.oraファイルは次のディレクトリに配置されています。

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

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

Oracle Advanced Securityによってサポートされる別の認証方式とSSL認証を併用する場合は、SQLNET.AUTHENTICATION_SERVICESパラメータを設定します。たとえば、サーバーがクライアントに対してサーバー自体を認証するときはSSLを使用し、クライアントがサーバーに対してクライアント自体を認証するときにRADIUSを使用する場合は、このパラメータを使用します。

クライアントのSQLNET.AUTHENTICATION_SERVICESパラメータの設定手順は次のとおりです。

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

 SQLNET.AUTHENTICATION_SERVICES = (TCPS, radius)

SSL認証と別の認証方式を併用しない場合は、このパラメータを設定しないでください。

8.6.4 タスク4: データベースへのログオン

クライアントにSSL認証を使用する場合(listener.oraファイルでSSL_CLIENT_AUTHENTICATION=true)、SQL*Plusを起動して次のように入力します。

CONNECT/@net_service_name

SSL認証を使用しない場合(listener.oraファイルでSSL_CLIENT_AUTHENTICATION=false)、SQL*Plusを起動して次のように入力します。

CONNECT username@net_service_name
Enter password: password

関連項目:


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

8.7 SSLのトラブルシューティング

次の項では、Oracle Advanced Security SSLアダプタの使用時に発生する可能性がある最も一般的なエラーを示します。

エラーの原因を判断するためにOracle Netのトレースを使用可能にする必要があります。トレース・パラメータを設定してOracle Netのトレースを使用可能にする方法は、『Oracle Database Net Services管理者ガイド』を参照してください。

NZE-28759: ファイルのオープンに失敗しました
原因: システムは指定されたファイルをオープンできませんでした。一般的に、このエラーはウォレットが見つからない場合に発生します。
処置: 次のことを確認します。
  • 正しいウォレット・ロケーションがsqlnet.oraファイルに指定されていることを確認します。これはウォレットを保存した位置と同じディレクトリになります。

  • Oracle Netのトレースを使用可能にして、オープンできなかったファイルの名前とその理由を判断します。

  • ウォレットを保存したときに、自動ログインが有効だったことを確認します。「自動ログインの使用方法」を参照してください。

NZE-28786: 暗号化された秘密鍵の復号化に失敗しました
原因: 不正パスワードが、暗号化秘密鍵を復号するのに使用されました。通常、これは自動ログイン・ウォレットが使用されていないために発生します。
処置: Oracle Wallet Managerを使用して、ウォレットに対して自動ログイン機能をオンにします。次にウォレットを再び保存します。「自動ログインの使用方法」を参照してください。
NZE-28858: SSLプロトコル・エラーが発生しました
原因: これは、2つの処理の間でのSSLハンドシェイク折衝の間に発生する一般的なエラーです。
処置: Oracle Netのトレースを有効にして、再び接続を試み、トレースの出力を生成します。トレースの出力内容については、Oracleサポート・サービスに問い合せてください。
NZE-28859: SSLでネゴシエーションに失敗しました
原因: SSLプロトコルの一部として、2つの処理の間での折衝中にエラーが発生しました。このエラーは、接続の両側で共通の暗号スイートがサポートされていない場合に発生する可能性があります。
処置: 次のことを確認します。
  • Oracle Net Managerを使用して、クライアントとサーバー両方のSSLのバージョンが一致しているか、または互換性があることを確認します。たとえば、サーバーがSSL 3.0のみを受信し、クライアントがTLS 1.0のみを受信する場合、SSL接続は失敗します。

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


    関連項目:


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


    注意:


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

NZE-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のトレースを使用可能にします。

NZE-28865: SSL接続はクローズしました。
原因: SSL接続は、基になるトランスポート・レイヤーでのエラーや、接続先の処理が突然終了したためにクローズしました。
処置: 次のことを確認します。
  • Oracle Net Managerを使用して、クライアントとサーバー両方のSSLのバージョンが一致しているか、または互換性があることを確認します。このエラーは、サーバーとクライアントで指定されているSSLバージョンが一致しないために発生する場合があります。たとえば、サーバーがSSL 3.0のみを受信し、クライアントがTLS 1.0のみを受信する場合、SSL接続は失敗します。

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

  • Oracle Netのトレースを使用可能にし、ネットワーク・エラーに対するトレースの出力をチェックします。

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

NZE-28868: ピア証明連鎖のチェックに失敗しました。
原因: 接続先から証明連鎖が提供されたときに、そのチェックが行われましたが、失敗しました。この失敗は、次のようないくつかの問題により発生します。
  • 連鎖内のいずれかの証明書が期限切れになっています。

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

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

処置: 「既存のウォレットのオープン」を参照し、Oracle Wallet Managerを使用してウォレットをオープンし、次の点を確認してください。
  • ウォレットにインストールされている証明書のすべてが最新のもの(期限切れでない)ことを確認します。

  • 接続先の証明連鎖からの認証局の証明書が、ウォレットに信頼できる証明書として追加されていることを確認します。Oracle Wallet Managerを使用して信頼できる証明書をインポートするには、「信頼できる証明書のインポート」を参照してください。

NZE-28885: 必須の鍵使用方法のある証明書が見つかりません。
原因: 証明書が、適切なX.509バージョン3の鍵使用方法の拡張機能で作成されませんでした。
処置: Oracle Wallet Managerを使用して、証明書の鍵使用方法をチェックします。表9-1「KeyUsageの値」を参照してください。
NZE-29024: 証明書の検証に失敗しました
原因: 接続先から送信された証明書を検証できませんでした。これは証明書が期限切れになっているか、取り消されているか、その他の理由で無効になっている場合に発生します。
処置: 次のことを確認します。
  • 証明書が有効であるかをチェックします。必要に応じて新しい証明書を入手します。送信者に証明書の検証に失敗したので、再送信するように伝えます。

  • サーバーのウォレットに適切なトラスト・ポイントが存在することを確認し、クライアントの証明書を検証します。存在しない場合は、Oracle Wallet Managerを使用して適切なトラスト・ポイントをインポートします。詳細は、「信頼できる証明書のインポート」を参照してください。

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

NZE-29223: 証明連鎖を作成できませんでした
原因: インストールされる証明書の既存のトラスト・ポイント証明連鎖を作成できません。一般に、このエラーは、接続先が完全な連鎖を提供しておらず、それを完全にする適切なトラスト・ポイントがない場合に戻されます。
処置: Oracle Wallet Managerを使用して、連鎖を完全にするのに必要なトラスト・ポイントをインストールします。詳細は、「信頼できる証明書のインポート」を参照してください。

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

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

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

この項では、次の項目について説明します。

8.8.1 使用するCRLの選択方法

信頼できるトラスト・ポイントすべてに対して、CRLが必要です。トラスト・ポイントは、一定の信頼度を有すると認定された第三者機関からの信頼できる証明書です。通常、信頼できる認証局をトラスト・ポイントと呼びます。

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

証明書取消しステータスはCRLに対してチェックされます。このCRLは、ファイル・システム・ディレクトリのOracle Internet Directoryに配置されているか、または証明書のCRL配布ポイント(CRL DP)拡張子に指定されている位置からダウンロードされます。一般に、CRLの定義は数日間有効です。CRLをローカル・ファイル・システムまたはディレクトリに格納する場合、定期的に更新する必要があります。CRL DPを使用し、証明書を使用するたびにCRLをダウンロードする場合は、CRLを定期的にリフレッシュする必要はありません。

サーバーは記載されている順番で、次の場所にあるCRLを検索します。システムが証明書のCAのDNと一致するCRLを検出すると、検索は終了します。

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

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


    注意:


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

  2. Oracle Internet Directory

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

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

  3. CRL DP

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


    注意:

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

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


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

証明書取消しステータス・チェックを有効にするには、sqlnet.oraファイルでSSL_CERT_REVOCATIONパラメータをREQUIREDまたはREQUESTEDに設定する必要があります。デフォルトではこのパラメータは、証明書取消しステータス・チェックがオフであることを示すNONEに設定されています。


注意:


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

クライアントまたはサーバーの証明書取消しステータス・チェックを有効にする手順は、次のとおりです。

図8-7 証明書取消しチェックが選択されているOracle Advanced Securityの「SSL」ウィンドウ

図8-7の説明は次にあります。
「図8-7 証明書取消しチェックが選択されているOracle Advanced Securityの「SSL」ウィンドウ」の説明

証明書失効リストによる証明書の検証を構成する手順は、次のとおりです。

  1. 失効チェック」リストから次のオプションのいずれかを選択します(図8-7を参照)。

    • 必須

      証明書取消しステータス・チェックが必要です。証明書が取り消されているかCRLが検出されない場合、SSL接続が拒否されます。証明書が取り消されていないことが確認できる場合のみ、SSL接続が受け付けられます。

    • リクエスト済

      CRLが使用可能な場合、証明書取消しステータス・チェックが実行されます。証明書が取り消されている場合、SSL接続は拒否されます。CRLが検出されない場合、または証明書が取り消されていない場合は、SSL接続が受け付けられます。


      注意:


      パフォーマンスの理由により、ユーザーの証明書のみが取消しについてチェックされます。

  1. (オプション)CRLがローカル・ファイル・システムに格納されている場合、格納されている場所を指定する次のフィールドのいずれか1つ、または両方を設定します。これらのフィールドは「失効チェック」が「必須」または「リクエスト済」に設定されている場合にのみ使用できます。

    • 証明書失効リスト・パス:

      CRLが格納されているディレクトリへのパスを入力するか、「参照」をクリックしてファイル・システムからパスを検索します。このパスを指定することにより、sqlnet.oraファイルにSSL_CRL_PATHパラメータを設定できます。パスがこのパラメータに対して指定されていない場合、デフォルトはウォレットのディレクトリになります。DERでエンコードされた(バイナリ・フォーマット)CRLおよびPEMでエンコードされた(BASE64)CRLの両方がサポートされます。

    • 証明書失効リスト・ファイル:

      PEMでエンコードされた(BASE64)CRLが1つのファイルで優先順に連結されている包括的なCRLファイルへのパスを入力するか、「参照」をクリックしてファイル・システムからパスを検索します。このファイルを指定することにより、sqlnet.oraファイルにSSL_CRL_FILEパラメータを設定できます。このパラメータが設定されている場合、ファイルは指定された位置に存在している必要があります。そうでない場合、起動中にアプリケーション・エラーになります。


      注意:


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

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


    注意:


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

    Oracle Internet Directoryの非SSLポートが無効の場合、Oracle Advanced SecurityのCRL機能は動作しません。


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

証明書取消しステータス・チェックを使用禁止にする手順は次のとおりです。

  1. 失効チェック」リストから「なし」を選択します。

  2. ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.oraファイルが更新され、次のエントリが追加されます。

    SSL_CERT_REVOCATION=NONE
    

    関連項目:


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

8.8.4 証明書失効リストの管理

証明書取消しステータス・チェックを有効にする前に、CAから受信するCRLが、コンピュータで使用できる形式(ハッシュ値で名前の変更がされている)または位置(ディレクトリにアップロードされている)であることを確認する必要があります。 Oracle Advanced Securityには、コマンドライン・ユーティリティorapkiが用意されており、次の作業に使用できます。

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


関連項目:


LDAPコマンドライン・ツールと構文については、『Oracle Internet Directoryアプリケーション開発者ガイド』の付録A「コマンドライン・ツール用構文」を参照してください。

8.8.4.1 orapkiのヘルプの表示

コマンドラインに次のように入力すると、CRLの管理に使用できるすべてのorapkiコマンドを表示できます。

orapki crl help

このコマンドは、すべての使用可能なCRL管理コマンドとオプションを表示します。


注意:


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

8.8.4.2 証明書検証用ハッシュ値による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発行者の名前が表示されます。

8.8.4.3 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で、hostnamessl_port(認証なしのSSLポート)は、ディレクトリがインストールされているシステムに対するものです。usernameはCRLをCRLサブツリーに追加する権限があるディレクトリ・ユーザーで、wallet_locationはCRLを発行したCAの証明書を含むウォレットの位置です。

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

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

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

注意:

  • この操作の実行時に、orapkiユーティリティにより、ディレクトリのパスワードが要求されます。

  • 必ずDiffie-HellmanベースのSSLサーバーが動作しているディレクトリのSSLポートを指定します。これは認証を実行しないSSLポートです。サーバー認証SSLポートおよび相互認証SSLポートはorapkiユーティリティではサポートされていません。


8.8.4.4 Oracle Internet Directoryに格納されているCRLのリスト作成

orapkiユーティリティを使用して、ディレクトリに格納されているすべてのCRLのリストを表示できます。これは特定のCRLの検索や、ローカル・コンピュータへの表示またはダウンロードに役立ちます。このコマンドは、CRLを発行したCA(発行者)と、ディレクトリのCRLサブツリーにおける位置(DN)を表示します。

Oracle Internet Directory内のCRLをリストするには、コマンドラインで次のように入力します。

orapki crl list -ldap hostname:ssl_port


ここで、hostnamessl_portは、ディレクトリがインストールされているシステムのものです。前項で説明したように、これは、認証なしのディレクトリのSSLポートです。

8.8.4.5 Oracle Internet Directoryに格納されている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が検証されます。

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

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

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

8.8.4.6 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の名前で、hostnamessl_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

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

証明書が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ハンドシェイク内の接続先には「NZE-29024: 証明書の検証に失敗しました」が表示されます。このメッセージが表示された場合のエラーの解決方法については、「NZE-29024: 証明書の検証に失敗しました」を参照してください。


関連項目:


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

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

証明書の検証に関連する次のトレース・メッセージは、Oracle Netのトレース・ファイルのentryexitエントリの間にログされます。Oracle SSLは複数の場所でCRLを検索するため、トレースに複数のエラーが存在する場合があります。

エラーをどのように解決するかについては次のエラー・メッセージの例をチェックしてください。

CRLの署名の検証がRSAステータスで失敗しました
原因: CRLの署名が検証できません。
処置: ダウンロードされたCRLは接続先のCAによって発行されており、CRLはダウンロード時に破損していなかったことを確認します。orapkiユーティリティでCRLを検証してから、ハッシュ値でCRLの名前を変更する、あるいはCRLをディレクトリにアップロードするようにしてください。

関連項目:


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

CRLの日付の検証がRSAステータスで失敗しました
原因: 現在の時刻が、次回の更新フィールドに記載されている時刻より遅くなっています。CRL DPを使用している場合は、このエラーが表示されることはありません。システムは次の順番でCRLを検索します。
  1. ファイル・システム

  2. Oracle Internet Directory

  3. CRL DP

この検索で検出された最初のCRLは、最新でない場合があります。

処置: CRLを最新のコピーで更新します。
CRLが見つかりませんでした
原因: CRLは構成されている位置で見つかりませんでした。構成で証明書の検証が必須に指定されている場合、エラーのNZE-29024を返します。
処置: 構成で指定されているCRLの位置が正しいことを、次の手順を実行して確認します。
  1. Oracle Net Managerを使用して、正しいCRLの位置が構成されているかどうかをチェックします。「証明書失効リストによる証明書の検証の構成」を参照してください。

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

Oracle Internet Directoryのホスト名またはポート番号が設定されていません。
原因: Oracle Internet Directoryの接続情報が設定されていません。これは致命的エラーではありません。検索はCRL DPで続けられます。
処置: Oracle Internet DirectoryにCRLを格納する場合は、Oracle Net Configuration Assistantを使用して、Oracleホーム用のldap.oraファイルを作成し、構成します。
CRL DPからの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のアップロード」を参照してください。

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

Oracle Advanced Securityは、RSA Security社のPKCS #11仕様書に準拠するAPIを使用するハードウェア・セキュリティ・モジュールをサポートします。一般に、これらのハードウェア・デバイスは、秘密鍵をトークンまたはスマートカードに安全に格納および管理したり、暗号処理を高速化するのに使用されます。

この項では、次の項目について説明します。

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

次の一般的なガイドラインは、Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用する場合に適用されます。

  1. ハードウェア・デバイス・ベンダーに連絡して、必要なハードウェア、ソフトウェアおよびPKCS #11ライブラリを入手します。

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

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

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

任意のOracleウォレットを使用するようにPKCS #11情報を含むウォレットを使用できます。ただし秘密鍵がハードウェア・デバイスに保管されており、暗号化操作もデバイスで実行される場合は除きます。

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

nCipher社によって作成されたハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが保証されています。これらのモジュールは、鍵を保管する安全な方法を提供し、暗号処理をオフロードします。おもな利点は次のとおりです。

  • 暗号化処理のオフロードによるサーバーの解放で、他の要求への応答が可能

  • デバイスでの安全な秘密鍵の格納

  • スマートカードの使用を通じて鍵の管理が可能


    注意:


    Oracle Advanced Securityで使用する認定済のハードウェアとソフトウェアを取得するには、nCipherの代理店に連絡する必要があります。

8.9.2.1 nCipherハードウェア・セキュリティ・モジュールを使用するために必要なOracleのコンポーネント

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

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

  • nCipher PKCS #11ライブラリのサポート

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

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

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

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


      注意:


      ハードウェア・セキュリティ・モジュールやセキュア・アクセラレータをインストールし、必要なライブラリを取得するには、nCipherの代理店に連絡する必要があります。

      Oracle Advanced SecurityでnCipherハードウェア・セキュリティ・モジュールを使用できるようにするには、次の作業を実行しておく必要があります。


8.9.2.2 nCipherハードウェア・セキュリティ・モジュールのインストール

セキュア・アクセラレータを使用するには、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の場合)


    注意:


    32ビット・リリースのOracle Databaseを使用する場合は32ビット・ライブラリ・バージョンを使用し、64ビット・リリースのOracle Databaseを使用する場合は64ビット・ライブラリ・バージョンを使用します。たとえば、Solarisオペレーティング・システム(SPARC 64ビット)版Oracle Databaseには、64ビットnCipher PKCS #11ライブラリを使用します。

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

SafeNET社によって作成されたハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが保証されています。これらのモジュールは、鍵を保管する安全な方法を提供し、暗号処理をオフロードします。おもな利点は次のとおりです。

  • 暗号化処理のオフロードによるサーバーの解放で、多くの要求への応答が可能

  • デバイスでの安全な秘密鍵の格納


    注意:


    Oracle Advanced Securityで使用する認定済のハードウェアとソフトウェアを取得するには、SafeNETの代理店に連絡する必要があります。

8.9.3.1 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 Advanced SecurityでSafeNETハードウェア・セキュリティ・モジュールを使用できるようにするには、次の作業を実行しておく必要があります。


8.9.3.2 SafeNETハードウェア・セキュリティ・モジュールのインストール

セキュア・アクセラレータを使用するには、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の場合)

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

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管理者ガイド』を参照してください。

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

次のエラーは、PKCS #11ハードウェア・セキュリティ・モジュールの使用に関するものです。

ORA-43000: PKCS11ライブラリが見つかりません
原因: システムでは、ウォレットが作成されたときに指定された位置に、PKCS #11ライブラリを配置できません。これは、ウォレットが作成された後にライブラリの移動が行われた場合のみ発生します。
処置: PKCS #11ライブラリを元の位置(ウォレットが作成されたときの場所)にコピーします。
ORA-43001: PKCS11トークンが見つかりません
原因: ウォレットの作成に使用されたスマートカードが、ハードウェア・セキュリティ・モジュール・スロットに存在しません。
処置: ウォレットの作成時に使用されたスマートカードが、ハードウェア・セキュリティ・モジュール・スロットに存在することを確認します。
ORA-43002: PKCS11パスワードが無効です
原因: これは、ウォレットの作成時に誤ったパスワードが指定された場合、またはウォレットの作成後にPKCS #11デバイス・パスワードが変更されても、Oracle Wallet Managerを使用してウォレットにパスワードが反映されていない場合に発生する可能性があります。
処置: 原因に応じて、次の対処方法のいずれかを実行します。

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

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


注意:


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

/log/logfile



関連項目:


SafeNET社およびnCipher社のデバイスに関するトラブルシューティングの詳細は、nCipherおよびSafeNETのマニュアルを参照してください。