この章では、Oracle Internet Directoryで使用するためにSecure Sockets Layer(SSL)を構成する方法について説明します。SSLを使用すると、厳密認証、データ整合性およびデータ・プライバシも構成できます。
この章の項目は次のとおりです。
関連項目:
|
Oracle Internet Directoryは、Secure Sockets Layer(SSL)を使用して、送信時にデータの変更、削除または再現が行われないことを保証します。SSLは、暗号方式のセキュアなメッセージ・ダイジェストを、MD5アルゴリズムまたはSecure Hash Algorithm(SHA)を使用する暗号チェックサムを使用して生成し、ネットワーク上で送信される各パケットに組み込みます。SSLでは、メッセージ・ダイジェストを使用して認証、暗号化、データ整合性を提供します。
この概要の項目は次のとおりです。
Oracle Internet Directoryは、SSLとともに使用可能な公開鍵暗号を使用して、送信時にデータが開示されないことを保証します。公開鍵暗号では、メッセージの送信側が受信側の公開鍵を使用して、メッセージを暗号化します。メッセージが送達されると、受信側は、受信側の秘密鍵を使用して、メッセージを復号化します。
暗号スイートは、ネットワーク・ノード間でのメッセージ交換に使用される認証、暗号化およびデータ整合性アルゴリズムのセットです。SSLハンドシェイク時に、2つのノード間で折衝し、メッセージを送受信するときに使用する暗号スイートを確認します。
表26-1に、Oracle Internet DirectoryでサポートされるSSL暗号スイートと、各暗号スイートに対応する認証、暗号化およびデータ整合性のメカニズムを示します。これらは、インスタンス固有の構成エントリの属性orclsslciphersuite
に格納されています。
表26-1 Oracle Internet DirectoryでサポートされるSSL暗号スイート
暗号スイート | 認証 | 暗号化 | データ整合性 |
---|---|---|---|
SSL_RSA_WITH_3DES_EDE_CBC_SHA |
RSA |
3DES |
SHA |
SSL_RSA_WITH_RC4_128_SHA |
RSA |
RC4 |
SHA |
SSL_RSA_WITH_RC4_128_MD5 |
RSA |
RC4 |
MD5 |
SSL_RSA_WITH_DES_CBC_SHA |
RSA |
DES |
SHA |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 |
RSA |
RC4_40 |
MD5 |
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA |
RSA |
DES40 |
SHA |
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA |
なし |
3DES |
SHA |
SSL_DH_anon_WITH_RC4_128_MD5 |
なし |
RC4 |
MD5 |
SSL_DH_anon_WITH_DES_CBC_SHA |
なし |
DES |
SHA |
SSL_RSA_WITH_AES_128_CBC_SHA |
RSA |
AES |
SHA |
SSL_RSA_WITH_AES_256_CBC_SHA |
RSA |
AES |
SHA |
Oracle Internet Directoryでは、次のTLS/SSLプロトコルをサポートしています。
SSLv3
TLSv1
SSLv2 Helloを使用したSSLv3
Oracle Internet Directoryでは、SSLv2をサポートしていません。
TLSv1では、表26-1にリストされているすべての暗号スイートを使用できます。SSLv3およびSSLv2 Helloを使用したSSLv3では、表26-1にリストされている暗号スイートの最初の10種類を使用できます。これらの場合、AES暗号(SSL_RSA_WITH_AES_128_CBC_SHAまたはSSL_RSA_WITH_AES_256_CBC_SHA)は使用できません。
SSLプロトコルでは、認証、整合性および機密保護を含むトランスポート層セキュリティがクライアントとサーバーとの間の接続に提供されます。表26-2に示す3つの認証モードがサポートされています。SSL認証モードは、インスタンス固有の構成エントリ内のorclsslauthentication
属性によって制御されます。
表26-2 SSL認証モード
SSL認証方式 | orclsslauthenticationの値 | 認証動作 |
---|---|---|
SSL認証なしモード、機密保護モード |
|
クライアントとサーバーのいずれも、相手に対して自己認証を行いません。証明書の送信または交換は行われません。SSL暗号化および復号化のみが使用されます。 |
SSLサーバー認証のみモード |
|
ディレクトリ・サーバーが、クライアントに対して自己認証を行います。ディレクトリ・サーバーは、そのサーバーのアイデンティティを示す証明書をクライアントに送信します。 |
SSLクライアントとサーバーの認証モード |
|
クライアントとサーバーは相互に自己認証を行い、それぞれ相手側に証明書を送信します。 |
デフォルトでは、Oracle Internet DirectoryはSSL認証なしモード(orclsslauthentication
=1
)を使用します。
クライアントとサーバーの双方が相互に自己認証を行うと、SSLはX.509 v3デジタル証明書から必要なアイデンティティ情報を取得します。
注意:
|
ディレクトリ・サーバー・インスタンスの起動時に、SSLプロファイルのパラメータを含む一連の構成パラメータがディレクトリに読み込まれます。
サーバー・インスタンスをセキュア・モードで実行するには、LDAPSを使用して通信を行うための単一のリスニング・エンドポイントを構成します。同じインスタンスで非保護接続を同時に実行するには、LDAPを使用して通信を行うための2番目のリスニング・エンドポイントを構成します。
Oracle Internet Directoryのインストール時、Oracle Identity Management 11gインストーラは特定の手順に従ってSSLおよび非SSLポートを割り当てます。まず、非SSLポートとして3060の使用を試みます。そのポートが使用できない場合、3061から3070の範囲のポートを試し、次に13060から13070の範囲のポートを試します。同様に、SSLポートとして3131を試し、次に3132から3141のポート、その後13131から13141のポートを試します。
注意: Oracle Internet Directoryの旧バージョンから11g リリース1(11.1.1)へアップグレードする場合、旧バージョンのポート番号が保持されます。 |
異なるSSLパラメータを使用して、異なる値で複数のOracle Internet Directoryインスタンスを作成および変更できます。これは、セキュリティ要件の異なるクライアントを制御する便利な方法です。
Oracleディレクトリ・レプリケーション・サーバーは、双方向(相互)認証をサポートするSSL対応のLDAPサーバーと直接通信できません。LDAPサーバーがSSL相互認証用に構成されていると、レプリケーション・サーバーの起動は失敗し、停止します。
Oracle Walletは、X509証明書、秘密鍵および信頼できるCA証明書の格納に使用されるセキュアなソフトウェア・コンテナです。自己署名証明書は、企業内のOracle Walletに格納できます。
インスタンス固有の構成からウォレットへの参照を削除する前に、orclsslenable
を0に設定してSSLを無効にする必要があります。
関連項目: ミドルウェア・コンポーネントとともにOracle Walletを使用する方法は、『Oracle Fusion Middleware管理者ガイド』を参照してください。 |
orclsslwalleturl
属性に定義されている、現在使用中のウォレットはファイル・システムから削除しないでください。そうすると、サーバーが正常に起動できなくなります。このファイルを削除する前に、ウォレットに対する参照をインスタンス固有の構成エントリ属性orclsslwalleturl
から削除してください。
11gでは、SSL構成サービスで抽出されるため、WLSTおよびOracle Enterprise Manager Fusion Middleware Controlでorclsslwalleturl
を直接操作する必要はありません。SSL構成サービスを使用して行う場合、SSL構成サービスでウォレット削除の試行がトラップされます。
インストール時、Oracle Internet Directoryはデュアル・モードで起動します。つまり、非SSL接続を使用してOracle Internet Directoryにアクセス可能なコンポーネントもあれば、SSLを使用してディレクトリに接続するコンポーネントもあります。デフォルトでは、Oracle Application Serverコンポーネントは、Oracle Internet Directoryとの通信をこのデュアル・モード環境で実行するように構成されます。必要であれば、非SSLモードを取り除き、すべてのミドルウェア・インスタンスでSSLを使用するように変更できます。
エンタープライズ・ユーザー・セキュリティやカスタマ・アプリケーションでは、デフォルトでの構成とは異なるSSLチャネルが必要な場合があります。たとえば、SSLサーバー認証モードやSSL相互認証モードが必要な場合などです。この場合、異なるSSLモード・ポートでリスニングする別のOracle Internet Directoryコンポーネント・インスタンスを作成する必要があります。
エンタープライズ・ユーザー・セキュリティのSSL構成の詳細は『Oracle Databaseエンタープライズ・ユーザー管理者ガイド』のエンタープライズ・ユーザー・セキュリティの構成に関する項を参照してください。
非認証モードの場合、11g リリース1(11.1.1)より前に開発されたOracleコンポーネントは、相互運用性モードが有効(orclsslinteropmode = 1
)なインスタンスを使用してのみOracle Internet Directoryに接続できます。これらのコンポーネントとの互換性を確保するため、デフォルトではSSL相互運用性モードは有効になっています。
JSSE(Java Secure Socket Extensions)を使用した新規クライアントやOracle以外のクライアントの場合、interopmodeが無効なSSLインスタンスが必要です。SSL相互運用性モードが無効(orclsslinteropmode = 0
)であることを前提として、Oracle Internet DirectoryはSun JDKのSSLに完全に準拠しています。
Oracle Internet Directoryがクライアントに不適切なモードで設定されている場合、クライアントからサーバーへのSSL接続で決定的ではない障害がまれに発生する可能性があります。
11g リリース1(11.1.1)以降、Oracle Internet Directoryは、startTLSをサポートしています。この機能を使用すると、非SSLポートでSSLセッションのオンデマンド・ネゴシエーションが有効になります。非SSLポートには特別な構成は必要ありません。Oracle Internet DirectoryでSSLエンドポイントが構成されている場合、クライアントは非SSLポートでstartTLSを使用して、SSLポートと同じ構成を持つ非SSLポートでSSL接続のネゴシエーションを実行できます。つまり、SSLポートで相互認証を使用する場合、startTLSは非SSLのポートで相互認証のネゴシエーションを実行しようとします。
Fusion Middleware Controlを使用したSSLの構成は、3つの基本的なタスクから構成されます。
Oracle Internet Directoryの再起動。
関連項目:
|
SSLの構成時に使用する自己署名付きウォレットを作成するには、次の手順を実行します。
「Oracle Internet Directory」メニューから、「セキュリティ」、「ウォレット」を選択します。ウォレットが存在する場合、リストが表示されます。
新規ウォレットを作成するには、「自己署名付きウォレットの作成」を選択します。「自己署名付きウォレットの作成」ページが表示されます。
「自己署名付きウォレットの作成」ページで、小文字のみを使用して新規ウォレットの名前を入力します。
自動ログイン・ウォレットの場合、「自動ログイン」を選択します。パスワードで保護されたウォレットの場合、「自動ログイン」の選択を解除します。
「自動ログイン」の選択を解除した場合、2つのフィールドにパスワードを入力します。
「共通名」に、インスタンスのホスト名を入力します。
リストからキー・サイズを選択します。
「発行」をクリックします。
確認メッセージが表示され、ウォレットのリストに新規ウォレットが表示されます。
関連項目: Oracle Walletの詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。 |
SSLを構成するためのウォレットを作成した後、次の手順を実行します。
「Oracle Internet Directory」メニューから「管理」を選択し、「サーバー・プロパティ」を選択します。
「SSL設定の変更」をクリックします。
「SSL設定」ダイアログで次のようにします。
「SSLの有効化」を選択します。
ウォレットを選択します。
これが自動ログイン・ウォレットでない場合、ウォレット・パスワードを「サーバー・ウォレット・パスワード」フィールドに入力します。
必要に応じて、「拡張SSL設定」を展開します。
「SSL認証」を「サーバー」に設定します。
「暗号スイート」を「すべて」に設定します。
「SSLプロトコル・バージョン」を適切なバージョン(通常「v3」)に設定します。
「OK」をクリックします。
「Oracle Internet Directory」→「可用性」→「再起動」と移動し、Oracle Internet Directoryインスタンスを再起動します。
相互認証モードでのSSL有効化の手順は、「SSL設定」ダイアログで「SSL認証」を「サーバー」ではなく相互に設定する点以外同じです。
表26-3に、Oracle Internet Directoryに適用可能なOracle Enterprise Manager Fusion Middleware ControlのSSLパラメータを示します。これらはすべて、次の形式の識別名を持つインスタンス固有の構成エントリ内にあります。
"cn=componentname,cn=osdldapd,cn=subconfigsubentry."
SSL属性
SSL構成の変更を有効にするには、サーバーを再起動する必要があります。
Oracle Walletを作成します。
SSLパラメータを構成します。
Oracle Internet Directoryを再起動します。
wlst
を使用してOracle Walletを作成し、SSLパラメータを構成するには、次の手順を実行します。
WebLogic管理サーバーのユーザー名、パスワードおよびポートを指定し、wlst
を起動してホストに接続します。
ORACLE_COMMON_HOME/common/bin/wlst.sh connect('username', 'password', 'localhost:7001')
第9.3項「WLSTを使用したシステム構成属性の管理」の説明に従って、カスタムMBeanツリーから特定のMBean oracle.as.oid
へと移動します。
custom() ls() cd('oracle.as.oid') ls()
キーストアMBean内にすでにある証明書(存在する場合)を確認します。表9-7「Oracle Internet Directoryに関連するMBean」を参照してください。
listWallets('app_server_instance', 'oid_component', 'oid')
次に例を示します。
listWallets('inst1', 'oid1', 'oid')
必要に応じて、自己署名付き証明書を新規作成します。
createWallet('inst1', 'oid1', 'oid', 'WALLET_NAME', 'WALLET_PASSWORD')
サーバー証明書として使用する自己署名付き証明書をウォレットに追加します。
addSelfSignedCertificate('inst1', 'oid1', 'oid', 'WALLET_NAME', 'WALLET_PASSWORD', 'cn=INSTANCE_HOST_NAME', 'key_size', 'alias=server-cert')
自己署名証明書ではなく、サード・パーティまたはカスタムの認証局発行の証明書を使用する場合、まず証明書をインポートする必要があります。手順については、『Oracle Fusion Middleware管理者ガイド』のキーストア、ウォレットおよび証明書の管理に関する章を参照してください。
適切な認証モードを指定し、oid1
コンポーネント・ノードのSSL用のリスナー/ポートを構成します。
configureSSL('app_server_instance', 'oid_component', 'oid', 'sslport1', 'property_file.prop')
Oracle Internet Directoryコンポーネントの場合、リスナー・ポートは常にsslport1
であり、コンポーネント・タイプは常にoid
です。次に例を示します。
configureSSL('inst1', 'oid1', 'oid', 'sslport1', 'myfile.prop')
この場合、myfile.prop
には次が含まれます。
KeyStore=WALLET_NAME AuthenticationType=auth-type SSLVersions=version Ciphers=cipher SSLEnabled=true
SSLのプロパティ・ファイルの詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。
第8章「Oracle Internet Directoryインスタンスの管理」の説明に従って、Oracle Internet Directoryを再起動し、変更をアクティブ化します。
第8.3.4項「opmnctlを使用したOracleインスタンスのコンポーネント登録の更新」に記載のとおりopmnctl
updatecomponentregistration
を実行します。
第26.5項「Oracle Directory Services Managerを使用したSSL接続のテスト」および第26.6項「コマンドラインによるSSL接続のテスト」で説明されている方法を使用して、SSLが有効であるかどうかを確認します。
注意: WLSTは、そのSSLポートを介してOracle Internet Directoryを管理します。Oracle Internet DirectoryのSSLポートは、認証なしまたはサーバー認証用に構成されている必要があります。Oracle Internet Directory SSLポートが相互認証用に構成されている場合、WLSTを使用してOracle Internet Directoryパラメータを変更することはできません。第26.1.3項「SSL認証モード」を参照してください。 |
関連項目:
|
SSLを構成するには、次の手順を実行する必要があります。
Oracle Walletを作成します。
SSLパラメータを構成します。
Oracle Internet Directoryを再起動します。
関連項目:
|
注意: orapki を使用してウォレットを構成することもできます。詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。 |
すでにウォレットを作成している場合、wlst
のかわりにldapmodify
を使用してSSLパラメータを変更できます。
たとえば、インスタンスoid1
についてorclsslinteropmode
の値を1
に変更するには、次のように入力します。
ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile
ldifFile
には、次のものが含まれます。
dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclsslinteropmode orclsslinteropmode: 1
SSLパラメータは、インスタンス固有の構成エントリの属性です。これらの構成エントリには、次の形式の識別名があります。
cn=componentname,cn=osdldapd,cn=subconfigsubentry
次に例を示します。
cn=oid1,cn=osdldapd,cn=subconfigsubentry
表26-4にSSL属性を示します。
ldapsearch
コマンドを使用して、SSL属性およびその値をリストできます。たとえば、oid1
インスタンスで文字列orclssl
を含む属性をリストするには、次のように入力します。
ldapsearch -p 3060 -D cn=orcladmin -q \ -b "cn=oid1,cn=osdldapd,cn=subconfigsubentry" \ -s base "objectclass=*" | grep -i orclssl
SSLパラメータを構成した後、第8章「Oracle Internet Directoryインスタンスの管理」の説明に従って、Oracle Internet Directoryを再起動します。
注意: Oracle Enterprise Manager Fusion Middleware ControlまたはWLSTを使用してOracle Internet Directoryを管理する場合は、orclsslenable を1 (SSLのみ)に設定しないでください。これらのユーティリティは、非SSL接続経由でSASLを使用するMBeanによってサーバーを管理します。 |
Oracle Directory Services Managerを使用してSSL接続をテストする手順は、次のとおりです。
第7.4.5項「Oracle Directory Services Managerの起動」の説明に従って、ODSMを起動します。
Oracle Internet Directoryサーバーに接続します。ログイン画面で、SSLを有効化し、SSLポートを指定します。
接続できた場合は、SSL接続は正常に機能しています。
ldapbind
コマンドを使用して、SSL接続をテストできます。UNIXでの構文は、次のとおりです。
ldapbind -D cn=orcladmin -q -U authentication_mode -h host -p SSL_port \ -W "file://DIRECTORY_CONTAINING_WALLET" -Q
Windowsでの構文は、次のとおりです。
ldapbind -D cn=orcladmin -q -U authentication_mode -h host -p SSL_port \ -W "file:device:\DIRECTORY_CONTAINING_WALLET" -Q
ここで、authentication_modeは、次のいずれかです。
数値 | 認証 |
---|---|
1 | SSL認証なしを必要とします。 |
2 | 一方向(サーバーのみ)のSSL認証を必要とします。 |
3 | 双方向(クライアントとサーバー)のSSL認証を必要とします。 |
関連項目: 『Oracle Fusion Middleware Oracle Identity Managementリファレンス』のldapbind コマンドライン・ツールのリファレンス。 |
SSL認証なしを必要とするSSL構成をテストするには、この方法を使用します。構文は次のとおりです。
ldapbind -D cn=orcladmin -q -U 1 -h host -p SSL_Port
SSLサーバー認証の設定されたSSL構成をテストするには、この方法を使用します。クライアントがサーバー認証をリクエストするかどうかは、任意に選択できます。
サーバー認証を使用した匿名バインド用の構文は、次のとおりです。
ldapbind -U 2 -h host -p port -W "file:DIRECTORY_CONTAINING_WALLET" -Q
ユーザーcn=orcladmin
、ウォレット・ファイルORACLE_INSTANCE
/OID/admin/mywallet
およびサーバー認証を使用したバインド用の構文は、次のとおりです。
ldapbind -D cn=orcladmin -q -U 2 -h host -p port \ -W "file:ORACLE_INSTANCE/OID/admin/mywallet" -Q
SSL認証を使用しないバインド用の構文は、次のとおりです。
ldapbind -D cn=orcladmin -q -U 1 -h host -p SSL_Port
SSLクライアントおよびサーバー認証の設定されたSSL構成をテストするには、この方法を使用します。
Oracle Internet Directoryでは、証明書の一致規則がサポートされます。ldapbind
コマンドラインで渡される識別名とパスワードは、無視されます。認証に使用されるのは、証明書または証明書ハッシュの識別名のみです。
クライアント証明書のバインド識別名(DN)を使用するための構文は、次のとおりです。
ldapbind -U 3 -h host -p port -W "file:DIRECTORY_CONTAINING_WALLET" -Q
相互運用性モードの詳細は、第26.1.7項「SSL相互運用性モード」を参照してください。
11g リリース1(11.1.1)より前に開発されたOracleコンポーネントとの互換性を確保するためにSSL相互運用性モードを設定するには、次のコマンドを使用します。
ldapmodify -D cn=orcladmin -q -p portNum -h hostname -f ldifFile
ldifFile
には、次のものが含まれます。
dn: cn=oid1,cn=osdldapd,cn=subconfigsubentry changetype: modify replace: orclsslinteropmode orclsslinteropmode: 1
SSLパラメータを構成した後、第8章「Oracle Internet Directoryインスタンスの管理」の説明に従って、Oracle Internet Directoryを再起動します。