この章では、Oracle Advanced SecurityでサポートされているSecure Sockets Layer(SSL)およびTransport Layer Security(TLS)プロトコルの構成および使用方法について説明します。次の項目について説明します。
Secure Sockets Layer(SSL)は、ネットワーク接続を保護するためにNetscape社が最初に開発した業界標準プロトコルです。SSLはRSA公開鍵暗号と対称鍵暗号化を併用して、認証、暗号化およびデータの整合性を実現します。
この項では、次の内容について説明します。
SSLは主にNetscape社によって開発されましたが、Internet Engineering Task Force(IETF)がその開発を引き継ぎ、Transport Layer Security(TLS)という名前に変更しました。基本的に、TLSはSSLバージョン3.0を段階的に改良したものです。
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を介してネットワーク接続を開始する場合、クライアントとサーバーではSSLハンドシェイクが実行されます。SSLハンドシェイクには、次の手順が含まれます。
クライアントとサーバーで使用する暗号スイートを確立します。この暗号スイートには、データ転送に使用する暗号化アルゴリズムが含まれます。
サーバーはサーバーの証明書をクライアントに送信し、クライアントは、サーバーの証明書が信頼できるCAによって署名されていることを確認します。この手順によってサーバーの識別情報が検証されます。
クライアントの認証が必要な場合は、同様に、クライアントがクライアントの証明書をサーバーに送信し、サーバーはクライアントの証明書が信頼できるCAによって署名されていることを確認します。
クライアントとサーバーは公開鍵暗号を使用して鍵情報を交換します。この情報に基づいて、それぞれセッション鍵を生成します。これ以降、クライアントとサーバー間のすべての通信は、1組のセッション鍵と折衝済の暗号スイートを使用して暗号化および復号化されます。
クライアントで、SSLを使用してサーバーへのOracle Net接続を開始します。
SSLによってクライアントとサーバー間のハンドシェイクが実行されます。
ハンドシェイクに成功した場合は、ユーザーがデータベースにアクセスするのに適切な認可を持っていることをサーバーが確認します。
公開鍵インフラストラクチャ(PKI)は、組織全体に対して、トラスト・アサーションをベースにしてセキュリティ基盤を提供するネットワーク・コンポーネントの基礎です。PKIは、異なるネットワーク・エンティティが、必要に応じて公開鍵暗号を使用するセキュリティ・サービスにアクセスできるようにするために存在します。オラクル社は、RSA Security社の公開鍵暗号標準に基づいた完全なPKIを提供します。これはOracleサーバーおよびクライアントに組み込まれています。
従来の秘密鍵または対称鍵の暗号化では、安全な通信を行うために、2者以上で共有される単一の秘密鍵が必要です。この鍵は、関係者間で送信される安全なメッセージの暗号化と復号化に使用されます。そのため、各関係者にあらかじめ鍵が安全に配布されている必要があります。この方法の問題点は、鍵を安全に送信して格納することが困難なことです。
公開鍵暗号では、公開鍵と秘密鍵のペアおよび鍵を安全に配布する方法を使用することによって、この問題の解決策を提供しています。自由に使用できる公開鍵を使用して暗号化されたメッセージは、対応する秘密鍵の保持者のみが復号化できます。秘密鍵は、他のセキュリティ資格証明とともにウォレットと呼ばれる暗号化されたコンテナに安全に格納されます。
公開鍵アルゴリズムはメッセージの機密性を保証できますが、通信関係者の識別情報は検証しないため、安全な通信は必ずしも保証されません。安全な通信を確立するには、メッセージの暗号化に使用される公開鍵が、実際に宛先の受信者に属していることを検証することが重要です。この検証を行わないと、第三者が通信を盗聴して公開鍵要求を傍受し、その公開鍵を合法的な別の鍵に置き換える可能性があります(介在者による攻撃)。
このような攻撃を回避するために、認証と呼ばれるプロセスで公開鍵の所有者を検証する必要があります。認証は、通信する双方の関係者が信頼している第三者機関である認証局(CA)を介して実行できます。
CAは、エンティティの名前、公開鍵およびその他の特定のセキュリティ資格証明が含まれている公開鍵証明書を発行します。この資格証明には通常、CAの名前、CAの署名および証明書の有効日(開始日、終了日)が含まれています。
CAはその秘密鍵を使用してメッセージを暗号化し、公開鍵はメッセージを復号化するために使用されます。この方法で、そのメッセージがCAによって暗号化されたことが確認されます。CAの公開鍵は広く公開されているため、アクセスするたびに認証する必要はありません。このようなCAの公開鍵は、ウォレットに格納されます。
Oracle環境における公開鍵インフラストラクチャ(PKI)コンポーネントには次のものがあります。
認証局(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コンポーネントです。
証明書は、エンティティの公開鍵が信頼できる認証局(CA)によって署名されたときに作成されます。この証明書は、そのエンティティの認証情報が正しいこと、および公開鍵がそのエンティティに実際に属していることを保証します。
証明書にはエンティティの名前、公開鍵、有効期限、シリアル番号および証明連鎖に関する情報が含まれます。証明書に関連する権限についての情報が含まれる場合もあります。
ネットワーク・エンティティが証明書を受け取ったとき、エンティティでは証明書が信頼できる証明書であること、つまり、信頼できる認証局が発行し、署名した証明書であることを確認します。証明書は、有効期限が切れるまで、または取り消されるまで有効です。
一般的に、CAが、ユーザー識別情報に公開鍵ペアがバインドされている証明書に署名すると、その証明書はある一定期間有効です。ただし、ユーザー名の変更や複合秘密鍵のような特定の事柄では、有効期限が来る前に証明書を無効にできます。この場合、CAは証明書を取り消し、証明書失効リスト(CRL)にそのシリアル番号を追加します。CAは、特定の公開鍵が関連するユーザー識別情報の確認に使用できなくなった場合に、定期的にCRLを発行して、ユーザーに警告します。
サーバーまたはクライアントは、Oracle環境でユーザー証明書を受け取ると、有効期限、署名、取消しステータスをチェックすることにより、その証明書を検証できます。証明書の取消しステータスは、公開されているCRLに照らしあわせて確認されます。証明書の取消しステータス・チェックを開始すると、サーバーは、この機能の設定状況に応じた適切なCRLを検索します。サーバーは次の場所にあるCRLを検索します。
ローカル・ファイル・システム
Oracle Internet Directory
CRL配布ポイント。これは、証明書が発行されたときの証明書拡張子であるCRL配布ポイント(CRL DP)X.509バージョン3で指定される場所です。
注意: 他のOracle製品でCRLを使用する場合、その製品のマニュアルを参照してください。CRLによる証明書の検証の実装は、Oracle Database 11g リリース1(11.1)のSSLアダプタでのみ使用できます。 |
ウォレットは、秘密鍵、証明書およびSSLに必要な信頼できる証明書も含めて、認証および署名された資格証明の格納に使用されるコンテナです。Oracle環境でSSLを介して通信する各エンティティには、X.509バージョン3の証明書、秘密鍵および信頼できる証明書の一覧を含むウォレットが必要です(Diffie-Hellmanを除く)。
セキュリティ管理者は、Oracle Wallet Managerを使用してサーバーのセキュリティ資格証明を管理します。ウォレットの所有者は、クライアントのセキュリティ資格証明の管理にOracle Wallet Managerを使用します。特に、次の操作を行う場合は、Oracle Wallet Managerを使用します。
公開鍵と秘密鍵のペアの生成と、証明書要求の作成
秘密鍵と一致するユーザー証明書の保存
信頼できる証明書の構成
注意: Oracle Advanced Security 11g リリース1(11.1)をインストールすると、Oracle Wallet Managerリリース10.1もインストールされます。 |
Oracle Advanced Securityは、次の機能にこのデバイスを使用します。
秘密鍵などの暗号化情報の格納
他のトランザクションに応答するためにCPUを解放することにより、RSA処理をサーバーからオフロードする暗号処理の実行
暗号化情報は、次の2つのタイプがあるハードウェア・デバイスに格納できます。
(サーバー側)ハードウェア・ボックス。ここでは鍵がボックスに格納されますが、トークンを使用して管理されています。
(クライアント側)スマートカード・リーダー。トークンに秘密鍵を格納するのをサポートします。
Oracle環境は、RSA Security社の公開鍵暗号規格(PKCS)#11仕様に準拠するAPIを使用するハードウェア・デバイスをサポートします。
注意: 現在、SafeNET社およびnCipher社のデバイスがOracle Advanced Securityで認証されています。 |
SSLをデータベースのユーザー名とパスワード、RADIUSおよびKerberosと併用するように、Oracle Advanced Securityを構成できます。これについては次の項で説明します。
関連項目: 複数の認証方式が指定されている sqlnet.ora ファイルの例も含め、サポートされている他の認証方式を使用してSSLを構成する方法は、付録A「データの暗号化と整合性のパラメータ」を参照してください。 |
図1-4は、Oracle Advanced Securityの実装アーキテクチャです。この図は、Oracle Advanced Securityが、SSLの最上部のセッション・レイヤーで動作し、トランスポート・レイヤーのTCP/IPを使用することを示しています。この機能の分離によって、サポートされている他のプロトコルとSSLを併用できます。
図8-1は、SSLがOracle Advanced Securityでサポートされている他の認証方式と併用される場合の構成を示しています。
この例では、SSLを使用して初期ハンドシェイク(サーバー認証)を確立し、別の認証方式を使用してクライアントを認証します。
クライアントがOracle Databaseサーバーに接続を要求します。
SSLがハンドシェイクを実行します。このハンドシェイク中、サーバーはクライアントに対して認証し、クライアントとサーバーは使用する暗号スイートを確立します。
SSLハンドシェイクが正常に完了すると、ユーザーがデータベースへのアクセスを要求します。
Oracle Databaseサーバーは、KerberosまたはRADIUSなどの非SSL認証方式を使用して、ユーザーを認証サーバーで認証します。
認証サーバーの検証に基づき、Oracle Databaseサーバーがユーザーにアクセス権と認可を付与し、ユーザーは、SSLを使用してデータベースに安全に接続できます。
Oracle Advanced Securityは、次の2つのタイプのファイアウォールをサポートしています。
アプリケーション・プロキシ・ベースのファイアウォール。Network Associates社のGauntletやAxent社のRaptorなど。
ステートフル・パケット・インスペクション型のファイアウォール。Check Point社のFirewall-1やCisco社のPIX Firewallなど。
SSLを使用可能にすると、ステートフル・インスペクション型のファイアウォールはアプリケーション・プロキシ型のファイアウォールと同じように動作します。これは、ステートフル・インスペクション型のファイアウォールが暗号化パケットを復号化しないためです。
ファイアウォールは、暗号化された通信を検査しません。ファイアウォールは、イントラネット・サーバーのSSLポート宛てのデータを検出すると、アクセス・ルールに基づいてターゲットのIPアドレスをチェックします。アクセス・ルールでは、特定のSSLポートへの接続を許可されているSSLパケットが規定されており、その他のパケットはすべて拒否されます。
いくつかのファイアウォール・ベンダーにより提供されている製品のOracle Netファイアウォール・プロキシ・キットにより、ファイアウォール・アプリケーションでは、データベースのネットワーク通信に対して固有のサポートが提供されます。ファイアウォールにこのプロキシ・キットが実装されていると、次の処理が発生します。
Net Proxy(Oracle Netファイアウォール・プロキシ・キットのコンポーネント)が、その通信をどこにルート指定すればよいかを決定します。
データベース・リスナーは、SSLハンドシェイクに参加するために、証明書へのアクセスを要求します。リスナーはSSLパケットを検査し、ターゲット・データベースを識別して、ターゲット・データベースがクライアントのリスニングに使用しているポートを返します。このポートは、SSLポートとして指定されている必要があります。
クライアントは、以降のすべての通信で、このサーバー指定のポートを使用して通信します。
ファイアウォール上で開いているポートの数は、別のデータベース用に要求されたデータベース接続の数に応じて増えます。このアプローチでは、ファイアウォール上のSSLポートがデータベースによって選択されたポートと一致する必要があるため、データベース・サーバーがランダムに選択されたSSLポートを使用することを禁止できます。この条件は、Oracle Connection Manager(Oracle Database Enterprise Editionに付属しているアプリケーション)をデプロイすることによって回避できます。
Oracle Connection Managerを使用すると、複数のOracle Netプロトコル上のクライアント接続をルート指定できます。各クライアント接続要求によって、そのクライアントとOracle Connection Managerの間にSSL接続が確立され、次に、ターゲット・データベースとの間にTCP/IP接続が確立されます。複数のクライアントは、ファイアウォールを通過する単一のSSLポートを使用して、ファイアウォールの内側にある複数のデータベースに接続できます。
注意: Oracle Connection Managerを使用すると、ファイアウォールを通過する複数のSSLポートが開かれないようにできますが、次の点を考慮する必要があります。
|
SSLを使用する際には次の問題を考慮してください。
SSLを使用すると、Oracle Internet Directoryなどの他のOracle製品と安全な通信ができます。
SSLは認証と暗号化の両方をサポートするため、クライアント/サーバーへの接続は、固有の暗号化を使用する標準のOracle Net TCP/IPトランスポートと比べて多少遅くなります。
各SSL認証モードには、構成設定が必要となります。
マルチスレッド・クライアントでは、現在SSLを使用できません。
注意:
|
クライアントとサーバーの両方でOracle Advanced Securityをインストールします。このときに、Oracle Universal Installerによって、SSLライブラリおよびOracle Wallet Managerがコンピュータに自動的にインストールされます。
関連項目: プラットフォーム固有のOracle Databaseインストレーション・ガイド |
インストール時に、Oracle DatabaseサーバーとOracleクライアントで、Oracleウォレットの位置を除くすべてのSSLパラメータにデフォルトが設定されます。 サーバーでSSLを構成するには、次の手順を実行します。
次の手順に進む前に、ウォレットが作成されていることを確認してください。ウォレットが作成されていることを確認するには、Oracle Wallet Managerを使用してウォレットを開きます。ウォレットには、Ready
状態の証明書が含まれていること、および自動ログインがオンになっていることが必要です。自動ログインがオンでない場合、「ウォレット」メニューからそれを選択して、ウォレットを再保存します。これで自動ログインがオンになります。
サーバーに必要な構成パラメータを指定するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照してください)。
Oracle Advanced Securityプロファイルにナビゲートします。(「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。「Oracle Advanced Security」ウィンドウの「SSL」タブが表示されます。(図8-5)
「SSL」タブをクリックして、「SSL構成: サーバー」を選択します。
「ウォレット・ディレクトリ」ボックスに、Oracleウォレットが格納されているディレクトリを入力するか、「参照」をクリックして、ファイル・システムからそのディレクトリを探します。
Enterprise User Securityに、データベースからディレクトリへのSSL接続を構成している場合、そのディレクトリにデータベースを登録している間に、Database Configuration Assistantが自動的にデータベース・ウォレットを作成します。SSL認証Enterprise User Securityに対しては、そのウォレットを使用してデータベースPKI資格証明を格納する必要があります。
重要:
ウォレットを作成するとき、および |
「ファイル」→「ネットワーク構成の保存」を選択します。
次のエントリにより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クライアントには関係ありません。
リスナーが独自のウォレットを所有するためにリスナー・ウォレット・ロケーションを変更するには、 |
暗号スイートは、ネットワークのエンティティ間でメッセージを交換するのに使用する認証、暗号化およびデータ整合性アルゴリズムを一組にしたものです。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匿名認証について:
|
表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)のみで動作します。
サーバーに暗号スイートを指定する手順は次のとおりです。
「追加」をクリックします。ダイアログ・ボックスに使用可能な暗号スイートが表示されます(図8-2)。
暗号スイートを1つ選択して、「OK」をクリックします。「暗号スイートの構成」リストが更新されます(図8-3)。
上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。
「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.ora
ファイルが更新され、次のエントリが追加されます。
SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])
sqlnet.ora
ファイルにSSL_VERSION
パラメータを設定できます。このパラメータは、サーバーの通信先のシステムで実行される必要があるSSLのバージョンを定義します。これらのシステムに任意の有効なバージョンを使用するように要求できます。sqlnet.ora
内のこのパラメータのデフォルト設定はundetermined
です。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストで「任意」を選択することによって設定されます。
サーバーに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」ウィンドウ(サーバー)
sqlnet.ora
ファイル内のSQLNET.AUTHENTICATION_SERVICES
パラメータで、SSL認証サービスを設定します。
SSL認証をOracle Advanced Securityでサポートされる他の認証方式と併用する場合は、このパラメータを設定します。たとえば、サーバーがクライアントに対してサーバー自体を認証するときはSSLを使用し、クライアントがサーバーに対してクライアント自体を認証するときにKerberosを使用する場合は、このパラメータを使用します。
listener.ora
ファイル内にSSL付きTCP/IPのリスニング・エンドポイントを指定して、リスナーを構成します。一般的なOracle Netクライアントにはポート番号2484を使用することをお薦めします。
関連項目:
|
手順2: サーバーDNの組込みと、クライアントのSSL付きTCP/IPの使用を指定するOracleネット・サービス名の構成
手順6: クライアントにおけるSSLの認証サービスとしての設定(オプション)
次の手順に進む前に、クライアントでウォレットが生成されており、そのクライアントに有効な証明書があることを確認する必要があります。
関連項目:
|
クライアントのネットワーク構成ファイルに、サーバーの識別名(DN)と、プロトコルとしてTCPS
を指定し、サーバーのDNの照合とSSL付きTCP/IP接続を有効にする必要があります。サーバーDN照合では、サーバーのグローバル・データベース名とサーバーの証明書のDNを照合することにより、接続中にデータベース・サーバーがクライアントに識別情報を偽らないようにします。
クライアントのネットワーク構成ファイルのtnsnames.ora
とlistener.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
ファイルを編集するには、次の手順で行います。
クライアントの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)の部分がサービス名と一致していることを、管理者が保証するという方法もあります。
クライアントに必要な構成パラメータを指定するには、Oracle Net Managerを使用します(「Oracle Net Managerの起動」を参照してください)。
Oracle Advanced Securityプロファイルにナビゲートします。(「Oracle Advanced Securityプロファイルへのナビゲート」を参照してください)。「Oracle Advanced Security」ウィンドウの「SSL」タブが表示されます(図8-5)。
図8-5 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)
「SSL」タブをクリックします。
「SSL構成: クライアント」を選択します。
「ウォレット・ディレクトリ」ボックスに、Oracleウォレットが格納されているディレクトリを入力するか、「参照」をクリックして、ファイル・システムからそのディレクトリを探します。
「サーバーX.509の名前に一致」リストから、次のいずれかのオプションを選択します。
はい: サーバーの識別名(DN)とサービス名が一致する必要があります。SSLによって、証明書がサーバーのものであることが保証され、DNとサービス名が一致した場合のみ、接続が成功します。
注意: このチェックは、RSA暗号が選択されている場合(デフォルト設定)のみ実行できます。 |
いいえ(デフォルト): SSLはDNとサービス名が一致しているかチェックしますが、その結果は使用されません。照合結果にかかわらず、接続は成功します。ただし、一致していない場合はエラーが記録されます。
クライアントで決定: デフォルトを有効にします。
注意: 「いいえ」を選択すると、次の警告が表示されます。 セキュリティ・アラート サーバーX.509の名前の照合を行わないと、サーバーが自身の識別情報を偽る可能性があります。 このオプションでは、不一致がある場合は接続が拒否されるように「はい」を選択することをお薦めします。 |
「ファイル」→「ネットワーク構成の保存」を選択します。
クライアントで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を構成する方法は、次のマニュアルを参照してください。 |
暗号スイートは、ネットワークのエンティティ間でメッセージを交換するのに使用する認証、暗号化およびデータ整合性アルゴリズムを一組にしたものです。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匿名認証を使用するすべての暗号スイートを使用禁止にします。使用禁止にしないと接続できません。 |
クライアントの暗号スイートを指定する手順は、次のとおりです。
「暗号スイートの構成」で、「追加」をクリックします。使用可能な暗号スイートを示すダイアログ・ボックスが表示されます(図8-2)。
暗号スイートを1つ選択して、「OK」をクリックします。「暗号スイートの構成」リストが更新されます(図8-6)。
図8-6 Oracle Advanced Securityの「SSL」ウィンドウ(クライアント)
上矢印と下矢印を使用して、暗号スイートの優先順位を設定します。
「ファイル」→「ネットワーク構成の保存」を選択します。
sqlnet.ora
ファイルが更新され、次のエントリが追加されます。
SSL_CIPHER_SUITES= (SSL_cipher_suite1 [,SSL_cipher_suite2])
sqlnet.ora
ファイルにSSL_VERSION
パラメータを設定できます。このパラメータは、クライアントの通信先のシステムで実行される必要があるSSLのバージョンを定義します。これらのシステムに任意の有効なバージョンを使用するように要求できます。sqlnet.ora
のこのパラメータのデフォルト設定はundetermined
です。これは、「Oracle Advanced Security」ウィンドウの「SSL」タブのリストで「任意」を選択することによって設定されます。「任意」が選択されている場合、TLS 1.0が最初に試され、次にSSL 3.0とSSL 2.0が順番に試されます。クライアントのSSLのバージョンは、サーバーが使用しているバージョンと互換性があることを確認します。
クライアントに必要な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を使用する場合は、このパラメータを使用します。
次の項では、Oracle Advanced Security SSLアダプタの使用時に発生する可能性がある最も一般的なエラーを示します。
エラーの原因を判断するためにOracle Netのトレースを使用可能にする必要があります。トレース・パラメータを設定してOracle Netのトレースを使用可能にする方法は、『Oracle Database Net Services管理者ガイド』を参照してください。
正しいウォレット・ロケーションがsqlnet.ora
ファイルに指定されていることを確認します。これはウォレットを保存した位置と同じディレクトリになります。
Oracle Netのトレースを使用可能にして、オープンできなかったファイルの名前とその理由を判断します。
ウォレットを保存したときに、自動ログインが有効だったことを確認します。「自動ログインの使用方法」を参照してください。
Oracle Net Managerを使用して、クライアントとサーバー両方のSSLのバージョンが一致しているか、または互換性があることを確認します。たとえば、サーバーがSSL 3.0のみを受信し、クライアントがTLS 1.0のみを受信する場合、SSL接続は失敗します。
Oracle Net Managerを使用して、どの暗号スイートがクライアントとサーバーで構成されているのか、互換性のある暗号スイートが両方に設定されているかをチェックします。
注意: 暗号スイートを構成していない場合、すべての使用可能な暗号スイートが有効になります。 |
ウォレットを検出できるように、正しいウォレット・ロケーションがsqlnet.ora
ファイルに指定されていることを確認します。
Oracle Net Managerを使用して、暗号スイートが正しくsqlnet.ora
ファイルに設定されていることを確認します。このエラーは、sqlnet.ora
が手動で編集されたときの暗号スイート名のスペルミスによって発生する場合があります。大/小文字の区別がある文字列が暗号スイート名に使用されていることに注意してください。
Oracle Net Managerを使用して、クライアントとサーバー両方のSSLのバージョンが一致しているか、または互換性があることを確認します。このエラーは、サーバーとクライアントで指定されているSSLバージョンが一致しないために発生する場合があります。たとえば、サーバーがSSL 3.0のみを受信し、クライアントがTLS 1.0のみを受信する場合、SSL接続は失敗します。
詳しい診断情報を確認するには、接続先のOracle Netのトレースを使用可能にします。
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接続に失敗しました。」の「処置」を参照してください。
ウォレットにインストールされている証明書のすべてが最新のもの(期限切れでない)ことを確認します。
接続先の証明連鎖からの認証局の証明書が、ウォレットに信頼できる証明書として追加されていることを確認します。Oracle Wallet Managerを使用して信頼できる証明書をインポートするには、「信頼できる証明書のインポート」を参照してください。
証明書が有効であるかをチェックします。必要に応じて新しい証明書を入手します。送信者に証明書の検証に失敗したので、再送信するように伝えます。
サーバーのウォレットに適切なトラスト・ポイントが存在することを確認し、クライアントの証明書を検証します。存在しない場合は、Oracle Wallet Managerを使用して適切なトラスト・ポイントをインポートします。詳細は、「信頼できる証明書のインポート」を参照してください。
証明書が取り消されておらず、証明書失効リスト(CRL)チェックがオンになっていることを確認します。詳細は、「証明書失効リストによる証明書の検証の構成」を参照してください。
特定の証明書が特定のコンテキストで使用できるかどうかを判断するプロセスは証明書の検証と呼ばれます。証明書の検証では次の点を判断します。
信頼できる認証局(CA)が証明書にデジタル署名をしています。
証明書のデジタル署名が、証明書自体の独立して計算されたハッシュ値と証明書の署名者(CA)の公開鍵に対応しています。
証明書の期限が切れていません。
証明書が取り消されていません。
SSLネットワーク・レイヤーは自動的に最初の3つの検証チェックを実行しますが、証明書が取り消されていないことを確認するために証明書失効リスト(CRL)チェックを構成する必要があります。CRLは、取り消された証明書のリストを含む署名されたデータ構造です。通常は、元の証明書を発行した同一のエンティティにより発行、署名されます。「証明書失効リスト」を参照してください。
この項では、次の項目について説明します。
信頼できるトラスト・ポイントすべてに対して、CRLが必要です。トラスト・ポイントは、一定の信頼度を有すると認定された第三者機関からの信頼できる証明書です。通常、信頼できる認証局をトラスト・ポイントと呼びます。
証明書取消しステータスはCRLに対してチェックされます。このCRLは、ファイル・システム・ディレクトリのOracle Internet Directoryに配置されているか、または証明書のCRL配布ポイント(CRL DP)拡張子に指定されている位置からダウンロードされます。一般に、CRLの定義は数日間有効です。CRLをローカル・ファイル・システムまたはディレクトリに格納する場合、定期的に更新する必要があります。CRL DPを使用し、証明書を使用するたびにCRLをダウンロードする場合は、CRLを定期的にリフレッシュする必要はありません。
サーバーは記載されている順番で、次の場所にあるCRLを検索します。システムが証明書のCAのDNと一致するCRLを検出すると、検索は終了します。
ローカル・ファイル・システム
システムは、まずSSL_CRL_FILE
パラメータについて、次にSSL_CRL_PATH
パラメータについて、sqlnet.ora
ファイルをチェックします。これらの2つのパラメータが指定されない場合、システムは任意のCRLに対してウォレット・ロケーションをチェックします。
注意: CRLをローカル・ファイル・システムに格納する場合、 orapki ユーティリティを使用して定期的に更新する必要があります。詳細は、「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。 |
Oracle Internet Directory
サーバーがCRLをローカル・ファイル・システムに配置できず、ディレクトリ接続情報がldap.ora
ファイルに構成されている場合、サーバーはディレクトリ内を検索します。サーバーは、CAの識別名(DN)とCRLサブツリーのDNを使用して、CRLサブツリーを検索します。
サーバーには、ディレクトリ内のCRLを検索するために、正しく構成されたldap.ora
ファイルが必要です。サーバーは、Oracle Internet Directoryのドメイン・ネーム・システム(DNS)検出機能は使用できません。CRLをディレクトリに格納する場合、orapki
ユーティリティを使用して定期的に更新する必要があることに注意してください。詳細は、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。
CRL DP
CAが、証明書が発行されたときのCRL DP X.509、バージョン3、証明書拡張子内の位置を指定すると、その証明書用の取消し情報を含む適切なCRLがダウンロードされます。現在、Oracle Advanced Securityは、HTTPまたはLDAPによるCRLのダウンロードをサポートしています。
証明書取消しステータス・チェックを有効にするには、sqlnet.ora
ファイルでSSL_CERT_REVOCATION
パラメータをREQUIRED
またはREQUESTED
に設定する必要があります。デフォルトではこのパラメータは、証明書取消しステータス・チェックがオフであることを示すNONE
に設定されています。
注意: CRLをローカル・ファイル・システムまたはOracle Internet Directoryに格納する場合は、コマンドライン・ユーティリティの orapki を使用して、ファイル・システム内のCRLの名前を変更するか、ディレクトリにCRLをアップロードする必要があります。orapki の使用方法は、「証明書失効リストの管理」を参照してください。 |
クライアントまたはサーバーの証明書取消しステータス・チェックを有効にする手順は、次のとおりです。
図8-7 証明書取消しチェックが選択されているOracle Advanced Securityの「SSL」ウィンドウ
証明書失効リストによる証明書の検証を構成する手順は、次のとおりです。
「失効チェック」リストから次のオプションのいずれかを選択します(図8-7を参照)。
必須
証明書取消しステータス・チェックが必要です。証明書が取り消されているかCRLが検出されない場合、SSL接続が拒否されます。証明書が取り消されていないことが確認できる場合のみ、SSL接続が受け付けられます。
リクエスト済
CRLが使用可能な場合、証明書取消しステータス・チェックが実行されます。証明書が取り消されている場合、SSL接続は拒否されます。CRLが検出されない場合、または証明書が取り消されていない場合は、SSL接続が受け付けられます。
注意: パフォーマンスの理由により、ユーザーの証明書のみが取消しについてチェックされます。 |
(オプション)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の名前変更」を参照してください。 |
(オプション)CRLがOracle Internet Directoryからフェッチされている場合、ディレクトリ・サーバーとポート情報をldap.ora
ファイルで指定する必要があります。
注意: ldap.ora ファイルを構成する場合、非SSLポートのみをディレクトリに指定してください。CRLダウンロードがSSLプロトコルの一部として実行され、SSL接続内でSSL接続を行うことはサポートされません。
Oracle Internet Directoryの非SSLポートが無効の場合、Oracle Advanced SecurityのCRL機能は動作しません。 |
「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.ora
ファイルが更新されます。
証明書取消しステータス・チェックを使用禁止にする手順は次のとおりです。
「失効チェック」リストから「なし」を選択します。
「ファイル」→「ネットワーク構成の保存」を選択します。sqlnet.ora
ファイルが更新され、次のエントリが追加されます。
SSL_CERT_REVOCATION=NONE
証明書取消しステータス・チェックを有効にする前に、CAから受信するCRLが、コンピュータで使用できる形式(ハッシュ値で名前の変更がされている)または位置(ディレクトリにアップロードされている)であることを確認する必要があります。 Oracle Advanced Securityには、コマンドライン・ユーティリティorapki
が用意されており、次の作業に使用できます。
Oracle Internet DirectoryからのCRLの削除
注意: 正常な検証を行うには、(期限切れになる前に)CRLを定期的な間隔で更新する必要があります。スクリプトで orapki コマンドを使用することにより、この作業を自動化できます。 |
また、LDAPコマンドライン・ツールを使用しても、Oracle Internet Directory内のCRLを管理できます。
orapki
のヘルプの表示コマンドラインに次のように入力すると、CRLの管理に使用できるすべてのorapki
コマンドを表示できます。
orapki crl help
このコマンドは、すべての使用可能なCRL管理コマンドとオプションを表示します。
注意: -summary 、-complete または-wallet コマンド・オプションの使用は、常にオプションです。コマンドは、これらのコマンド・オプションが指定されない場合でも実行されます。 |
システムが証明書を検証する場合、証明書を作成した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発行者の名前が表示されます。
ディレクトリで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
を指定すると、ディレクトリにアップロードする前に、ツールによって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
ユーティリティを使用して、ディレクトリに格納されているすべての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を、要約された形式で表示できます。また、特定の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
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に対して有効であるかを判断するために、Oracle Netのトレースを使用可能にできます。取り消された証明書がCRLを使用して検証される場合、Oracle Netのトレース・ファイルには次のエントリが表示されます。ただし、entry
とexit
の間にはエラー・メッセージはログされません。
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のトレース・ファイルのentry
とexit
エントリの間にログされます。Oracle SSLは複数の場所でCRLを検索するため、トレースに複数のエラーが存在する場合があります。
エラーをどのように解決するかについては次のエラー・メッセージの例をチェックしてください。
Oracle Net Managerを使用して、正しいCRLの位置が構成されているかどうかをチェックします。「証明書失効リストによる証明書の検証の構成」を参照してください。
必要に応じて、orapki
ユーティリティを使用してCRLをシステムで使用するように、次のように構成します。
ローカル・ファイル・システムに格納されているCRLについては、「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。
ディレクトリに格納されているCRLについては、「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。
手動でCRLをダウンロードします。ローカル・ファイル・システムに格納するか、またはOracle Internet Directoryに格納するかにより、次の手順を実行します。
CRLをローカル・ファイル・システムに格納する手順は次のとおりです。
Oracle Net Managerを使用して、CRLディレクトリまたはファイルのパスを指定します。「証明書失効リストによる証明書の検証の構成」を参照してください。
orapki
ユーティリティを使用して、CRLをシステムで使用するように構成します。「証明書検証用ハッシュ値によるCRLの名前変更」を参照してください。
CRLをOracle Internet Directoryに格納する手順は次のとおりです。
Oracle Net Configuration Assistantを使用して、ldap.ora
ファイルをディレクトリ接続情報とともに作成し、構成します。
orapki
ユーティリティを使用して、CRLをディレクトリにアップロードします。「Oracle Internet DirectoryへのCRLのアップロード」を参照してください。
Oracle Advanced Securityは、RSA Security社のPKCS #11仕様書に準拠するAPIを使用するハードウェア・セキュリティ・モジュールをサポートします。一般に、これらのハードウェア・デバイスは、秘密鍵をトークンまたはスマートカードに安全に格納および管理したり、暗号処理を高速化するのに使用されます。
この項では、次の項目について説明します。
次の一般的なガイドラインは、Oracle Advanced Securityでハードウェア・セキュリティ・モジュールを使用する場合に適用されます。
ハードウェア・デバイス・ベンダーに連絡して、必要なハードウェア、ソフトウェアおよびPKCS #11ライブラリを入手します。
使用しているハードウェア・セキュリティ・モジュールに適しているハードウェア、ソフトウェアおよびライブラリをインストールします。
ハードウェア・セキュリティ・モジュールのインストールをテストして、正しく動作することを確認します。手順についてはデバイスのマニュアルを参照してください。
秘密鍵をトークンに格納する場合は、Oracle Wallet Managerを使用してPKCS11
タイプのウォレットを作成し、PKCS #11ライブラリへの絶対パス(ライブラリ名を含む)を指定します。Oracle PKCS11
ウォレットには、秘密鍵アクセス用のトークンを示す情報があります。
任意のOracleウォレットを使用するようにPKCS #11情報を含むウォレットを使用できます。ただし秘密鍵がハードウェア・デバイスに保管されており、暗号化操作もデバイスで実行される場合は除きます。
nCipher社によって作成されたハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが保証されています。これらのモジュールは、鍵を保管する安全な方法を提供し、暗号処理をオフロードします。おもな利点は次のとおりです。
暗号化処理のオフロードによるサーバーの解放で、他の要求への応答が可能
デバイスでの安全な秘密鍵の格納
スマートカードの使用を通じて鍵の管理が可能
注意: Oracle Advanced Securityで使用する認定済のハードウェアとソフトウェアを取得するには、nCipherの代理店に連絡する必要があります。 |
nCipherハードウェア・セキュリティ・モジュールを使用するには、次のコンポーネントが必要です。
nCipherハードウェア・セキュリティ・モジュール
nCipher PKCS #11ライブラリのサポート
次のプラットフォーム固有のPKCS#11ライブラリが必要です。
libcknfast.so
ライブラリ(UNIX 32ビットの場合)
libcknfast-64.so
ライブラリ(UNIX 64ビットの場合)
cknfast.dll
ライブラリ(Windowsの場合)
注意: ハードウェア・セキュリティ・モジュールやセキュア・アクセラレータをインストールし、必要なライブラリを取得するには、nCipherの代理店に連絡する必要があります。 Oracle Advanced Securityで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ライブラリを使用します。 |
SafeNET社によって作成されたハードウェア・セキュリティ・モジュールは、Oracle Advanced Securityで動作することが保証されています。これらのモジュールは、鍵を保管する安全な方法を提供し、暗号処理をオフロードします。おもな利点は次のとおりです。
暗号化処理のオフロードによるサーバーの解放で、多くの要求への応答が可能
デバイスでの安全な秘密鍵の格納
注意: Oracle Advanced Securityで使用する認定済のハードウェアとソフトウェアを取得するには、SafeNETの代理店に連絡する必要があります。 |
SafeNET Luna SAハードウェア・セキュリティ・モジュールを使用するには、次のコンポーネントが必要です。
SafeNET Luna SAハードウェア・セキュリティ・モジュール
SafeNET Luna SA PKCS #11ライブラリのサポート
次のプラットフォーム固有のPKCS#11ライブラリが必要です。
libCryptoki2.so
ライブラリ(UNIXの場合)
cryptoki.dll
ライブラリ(Windowsの場合)
注意: ハードウェア・セキュリティ・モジュールやセキュア・アクセラレータをインストールし、必要なライブラリを取得するには、SafeNETの代理店に連絡する必要があります。 Oracle Advanced Securityで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の場合)
Oracle Netのトレースをオンにすると、モジュールが使用されているかどうかを検出できます。ウォレットに、使用されているモジュールに関するPKCS #11情報と秘密鍵が含まれている場合、次のエントリがOracle Netのトレース・ファイルに表示されます。ただし、entry
とexit
の間にはエラー・メッセージはログされません。
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
次のエラーは、PKCS #11ハードウェア・セキュリティ・モジュールの使用に関するものです。
ウォレットの作成中にこのエラーが表示された場合は、正しいパスワードであることを確認して再入力します。
ウォレットの作成後にパスワードが変更された場合は、Oracle Wallet Managerを使用してウォレットをオープンし、新しいパスワードを入力します。
注意: nCipherログ・ファイルは、モジュールがインストールされているディレクトリの次の位置にあります。
|
関連項目: SafeNET社およびnCipher社のデバイスに関するトラブルシューティングの詳細は、nCipherおよびSafeNETのマニュアルを参照してください。 |