相互認証を設定すると、リモートローダとIdentity Managerエンジンとの間のセキュアな通信を保証することができます。相互認証では、パスワードの代わりにハンドシェークの証明書を使用します。リモートローダとIdentity Managerエンジンは、信頼する認証局(CA)によって発行された公開鍵証明書やデジタル証明書、または自己署名証明書を交換して検証することにより相互認証します。相互認証に成功すると、リモートローダはIdentity Managerエンジンの認証を受けます。リモートローダとIdentity Managerエンジンの両方が認証エンティティと通信しているという信頼を確立した後で、同期トラフィックが発生します。
相互認証を設定するには、次のタスクを実行します。
相互認証が適切に機能するには、エンジン用のクライアント証明書とリモートローダ用のクライアント証明書が必要です。eDirectoryからこれらの証明書をエクスポートするか、サードパーティベンダーからそれらをインポートすることができます。ほとんどの場合、追加投資を行わずにeDirectoryからサーバ証明書をエクスポートします。リモートローダ用のサードパーティクライアント証明書をエクスポートしたい場合もあります。
アイデンティティボールトの証明書オブジェクトはキーマテリアルオブジェクト(KMO)と呼ばれます。このオブジェクトには、SSL通信に使用される証明書に関連付けられている公開鍵と秘密鍵を含む証明書データの両方が安全に含まれています。相互認証の場合、エンジンとリモートローダに対してそれぞれ2つのKMOが必要です。
既存のKMOをエクスポートするか、新しいKMOを作成してそれをエクスポートすることができます。クライアントKMOとサーバKMOの作成プロセスは異なります。
サーバKMOを作成するには、次の手順を実行します。
NetIQ iManagerにログインします。
左サイドペインで、NetIQ Certificate Serverをクリックし、サーバ証明書を選択します。
作成した証明書を所有するサーバを選択します。
証明書のニックネームを指定します。たとえば、serverkmoです。
作成方法として標準を選択し、次へをクリックします。
[概要]の画面を確認し、終了をクリックして、閉じるをクリックします。
環境設定ファイルを作成する
NetIQ iManagerにログインします。
左サイドペインで、NetIQ Certificate Serverをクリックし、サーバ証明書を選択します。
作成した証明書を所有するサーバを選択します。
証明書のニックネームを指定します。たとえば、clientkmoです。
証明書の作成方法でカスタムを選択して、次へをクリックします。
デフォルトの組織認証局をそのままにして、次へをクリックします。
Enable Extended key usage (拡張キーの使用を有効にする)を選択して、次へをクリックします。
残りの項目については、証明書のデフォルト値をそのまま使用します。
[概要]の画面を確認し、終了をクリックして、閉じるをクリックします。
エンジンとリモートローダが相互認証に使用するKMOをeDirectoryからエクスポートします。
Identity ManagerエンジンのKMOをエクスポートするには、DirXMLコマンドライン(dxcmd)ユーティリティを実行します。
dxcmd -user <admin DN> -password <password of admin> -exportcerts <kmoname> <server|client> <java|native|dotnet> <output dir>
where
user は、ドライバへの管理権限を持つユーザの名前を指定します。
passwordは、ドライバへの管理権限を持つユーザのパスワードを指定します。
exportcertsは、eDirectoryから証明書と秘密鍵/公開鍵をエクスポートします。サーバ証明書をまたはクライアント証明書のいずれをエクスポートするかどうか、証明書を使用するドライバのタイプ、およびコマンドがこの情報を保存する宛先フォルダを指定する必要があります。
例: dxcmd -user admin.sa.system -password novell -exportcerts serverkmo server java '/home/certs'
このコマンドは、/home/certs/ディレクトリのserverkmo_server.ksファイルを生成します。キーストアのデフォルトパスワードはdirxmlです。
リモートローダのKMOをエクスポートするためのdxcmdコマンドを実行している場合は、次の考慮事項が適用されます。
dxcmdユーティリティはLDAPモードで実行します。このモードを初めて使用する場合、eDirectoryからの証明書を信頼するかどうかの選択を求めるプロンプトが表示されます。環境に応じて、現在のセッションのみ、または現在と今後のセッションに対して証明書を信頼する、またはすべての証明書を信頼することを選択したり、証明書を信頼しないことを選択できます。
Identity Managerサーバでリモートローダを実行している場合、LDAPまたはドット形式のいずれかでコマンドを実行します。別のサーバにリモートローダがインストールされている場合、LDAP形式でのみコマンドを実行します。
Identity Managerサーバで認証できるようにサーバIPアドレスまたはホスト名を解決するには、コマンドに-hostパラメータを指定します。
次の構文を使用してコマンドを実行します。
dxcmd -dnform ldap -host <IP address of the host> -user <admin DN> -password <password of admin> -exportcerts <kmoname> <client> <java|native|dotnet> <output dir>
表 20-1 異なるドライバのタイプの例
ドライバのタイプ |
コマンド |
出力 |
---|---|---|
Javaドライバ |
dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client java '/home/certs' |
/home/certs/ディレクトリにあるclientkmo_client.ksファイル キーストアのデフォルトパスワードはdirxmlです。 |
ネイティブドライバ |
dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client native 'C:\certs' |
C:\certsディレクトリのclientkmo_clientcert.pem、clientkmo_clientkey.pemおよびtrustedcert.b64ファイル |
.NETドライバ |
dxcmd -dnform ldap -host 194.99.90.218 -user cn=admin,ou=sa,o=system -password novell -exportcerts clientkmo client dotnet 'C:\certs' |
C:\certsディレクトリのclientkmo_clientcert.pfxおよびtrustedcert.b64ファイル |
リモートローダでサードパーティ証明書を使用するには、.pfxファイルの証明書およびBase 64形式の信頼するルートファイルをエクスポートし、.pfx証明書をドライバが使用する形式に変換する必要があります。たとえば、ネイティブドライバでは.pem形式の秘密鍵と証明書キーが必要ですが、Javaドライバでは、.jks形式のキーストアが必要です。.NETドライバは.pfx形式のファイルを使用します。したがって、.NETドライバについてはファイルを変換する必要はありません。
次の手順に従います。
秘密鍵を.pfxファイルから.pem形式で取得します。
コマンドを入力します(openssl pkcs12 -in servercert.pfx -nocerts -out serverkey.pem –nodesなど)。
証明書キーを.pfxファイルから.pem形式で取得します。.
コマンドを入力します(openssl pkcs12 -in servercert.pfx -nokeys -out servercert.pemなど)。
Javaキーストアを.pfxファイルから作成します。コマンドを入力します(keytool -importkeystore -srckeystore servercert.pfx -srcstoretype pkcs12 -destkeystore servercert.jks -deststoretype JKSなど)。
最終手順として、ドライバのタイプに応じてリモートローダ設定ファイルの情報を指定します。詳細については、相互認証のためのドライバの有効化を参照してください。
次のタスクを実行して、相互認証のためにドライバ通信を有効にします。
DesignerまたはiManagerでKMOまたはキーストアを使用してドライバを設定できます。
Designerでは、初期ドライバ作成プロセス中にドライバを設定するか、またはドライバを作成後に設定することができます。
Designerでドライバを設定するには:
Designerでプロジェクトを開きます。
[モデラー]ビューのパレットで、作成するドライバを選択します。
ドライバのアイコンを[モデラー]ビュー上にドラッグします。
インストールウィザードに表示される手順に従います。
[リモートローダ]ウィンドウで[はい]を選択します。
ホスト名: ドライバのリモートローダサービスが実行されているサーバのホスト名またはIPアドレスを指定します。たとえば、hostname=192.168.0.1を入力します。このパラメータの値を指定しない場合、値はデフォルトでlocalhostになります。
ポート: このドライバ用のリモートローダがインストールされ、動作している場所のポート番号を指定します。デフォルトポート番号は8090です。
KMO: リモートローダがSSL接続に使用するキーと証明書を含むKMOのキー名を指定します。たとえば、kmo=serverkmoと入力します。KMOを使用して相互認証を設定する場合、このパラメータの値を指定する必要があります。その他のパラメータセクションで、ルートファイルパラメータの値を指定する必要もあります。
その他のパラメータ: 使用するリモートローダの設定を指定します。このパラメータには相互認証通信に関する情報が含まれます。指定されるすべてのパラメータは、次のようにキーと値のペア形式を使用する必要があります。:paraName1=paraValue1 paraName2=paraValue2
たとえば、キーストアに次の構文を使用します。
UseMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' keypass='dirxml' key='serverkmo'
たとえば、kmoに次の構文を使用します。
useMutualAuth=true rootFile='/home/cacert.b64'
パスワードの設定: アプリケーションパスワードを設定または変更できます。
パスワードの削除: アプリケーションに対するパスワードを削除します。
次へをクリックします。
ドライバのインストールが終了するまで、ウィザードの残りの指示に従ってください。
ドライバを作成するために完了するタスクの概要を確認し、終了をクリックします。
または、次の手順を実行することにより、ドライバを作成後にそれを設定することができます。
Designerの[アウトライン]ビューで、ドライバを右クリックします。
[プロパティ]を選択します。
ナビゲーションペインで、ドライバ環境設定を選択します。
認証を選択します。
Remote Loader authentication (リモートローダの認証)セクションで、リモートローダとIdentity Managerエンジン間の相互認証を設定するために必要な情報を指定します。
kmoの場合は次の構文を使用します。
hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true kmo=certificatename rootFile=<absolute path to the file>
次に例を示します。
hostname=192.168.0.1 port=8090 useMutualAuth=true kmo=serverkmo rootFile='/home/cacert.b64'
キーストアの場合は次の構文を使用します。
hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true keystore=<absolute path to the keystore file> storepass=<keystore password> key=<alias name> keypass= <password for the key>
次に例を示します。
hostname=192.99.90.17 port=8097 useMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' key='serverkmo' keypass='dirxml'
iManagerで設定を変更するには:
iManagerを起動します。
[概要]からIdentity Managerドライバオブジェクトを選択します。
ドライバオブジェクトのプロパティで、次の手順を実行します。
[ドライバモジュール]から、[リモートローダに接続]を選択します。
ドライバオブジェクトパスワードで、リモートローダがエンジンに対して認証するために使用するパスワードを指定します。
このパスワードは、リモートローダで定義したドライバオブジェクトのパスワードに一致している必要があります。
[Remote Loader Connection Parameters (リモートローダ接続パラメータ)]で、リモートローダに接続するために必要な情報を指定します。
kmoの場合は次の構文を使用します。
hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true kmo=certificatename rootFile=<absolute path to the file>
次に例を示します。
hostname=192.168.0.1 port=8090 useMutualAuth=true kmo=serverkmo rootFile='/home/cacert.b64'
キーストアの場合は次の構文を使用します。
hostname=xxx.xxx.xxx.xxx port=xxxx useMutualAuth=true keystore=<absolute path to the keystore file> storepass=<keystore password> key=<alias name> keypass= <password for the key>
次に例を示します。
hostname=192.99.90.17 port=8097 useMutualAuth=true keystore='/home/certs/serverkmo_server.ks' storepass='dirxml' key='serverkmo' keypass='dirxml'
(オプション) Remote Loader Password (リモートローダパスワード)で、Identity Managerエンジン(またはリモートローダシム)がリモートローダへ認証するために必要なパスワードを指定します。
適用をクリックし、OKをクリックします。
リモートローダ設定ファイルのドライバインスタンスを設定する必要があります。ドライバ用のリモートローダ設定ファイルのキーファイル、証明書ファイル、およびルートファイルを格納するディレクトリへの絶対パスを確実に指定します。
相互認証を有効化するためのコンテンツを含むようにドライバのリモートローダ設定ファイルを変更します。このファイルは、/opt/novell/dirxml/docディレクトリにあります。
設定を変更するには:
ドライバおよびリモートローダをインストールしているサーバにログインします。
リモートローダを停止します。
たとえば、次のコマンドを入力します。
rdxml -config /home/drivershim.conf -u
テキストエディタで、ドライバ用のリモートローダ設定ファイルを開きます。
このファイルに相互認証を有効化するために必要なコンテンツを追加します。
たとえば、Javaドライバの場合、このエントリを追加します。
-connection "port=8090 useMutualAuth=true keystore='/home/certs/clientkmo_client.ks' storepass='dirxml' key='clientkmo' keypass='dirxml'"
たとえば、ネイティブドライバの場合、このエントリを追加します。
-connection "useMutualAuth=true port=8090 rootfile='/home/certs/trustedcert.b64' certfile='/home/certs/clientkmo_clientcert.pem' keyfile='/home/certs/clientkmo_clientkey.pem' keypass='dirxml' certform=PEM keyform=PEM"
ファイルを保存して閉じます。
ドライバを再起動します。
リモートローダコンソールの説明カラムから、ドライバインスタンスを選択します。
[停止]をクリックします。
リモートローダのパスワードを入力して、[OK]をクリックします。
[編集]をクリックします。
相互認証を有効化するために設定情報を変更するには、次の手順を完了してください。
相互認証を選択します。
「ネイティブドライバの場合」、認証用の証明書が保存されているキーファイルへのパスを指定します。キーファイルはBase 64形式である必要があります。
認証用の鍵が保存されているファイルのパスを指定します。キーファイルはBase 64形式である必要があります。たとえば、eDirectoryからの証明書のエクスポートのdxcmdによって作成されたC:\certs\ディレクトリのclientkmo_clientkey.pemin ファイルです。
認証に使用する秘密鍵のパスワードを指定します。
証明書が保存されているファイルを指定します。この証明書ファイルはBase 64形式である必要があります。たとえば、eDirectoryからの証明書のエクスポートでdxcmdによって作成されたC:\certs\ディレクトリのclientkmo_clientcert.pemファイルです。
リモートインタフェースシムが使用する証明書の発行者のルート認証局証明書を含むファイルの名前を指定します。信頼するルートファイルはBase 64形式である必要があります。たとえば、eDirectoryからの証明書のエクスポートでdxcmdによって作成されたC:\certs\ディレクトリのtrustedcert.b64ファイルです。
「Javaドライバの場合」、証明書が保存されているキーストアファイルのパスを指定します。このキーストアファイルには少なくとも1つの公開鍵/秘密鍵ペアが存在する必要があります。
認証に使用するJava キーストアファイルのパスを指定します。キーストアファイルには暗号化キーと証明書が含まれます。このキーストアファイルには少なくとも1つの公開鍵/秘密鍵ペアが存在する必要があります。たとえば、eDirectoryからの証明書のエクスポートでdxcmdによって作成されたC:\certs\ディレクトリのclientkmo_client.ksです。
対照鍵の生成に使用するキーストアファイル内の公開鍵/秘密鍵ペアの名前を指定します。たとえば、clientkmoです。
キーストアファイルをロードする際に使用するパスワードを指定します。
キーストアに保存されている秘密鍵のパスワードを指定します。Identity Managerは、SSL通信を暗号化する際にこの鍵を使用します。
「.NETドライバの場合」、認証用の証明書が保存されているキーファイルのパスを指定します。
認証用の鍵が保存されているファイルのパスを指定します。たとえば、eDirectoryからの証明書のエクスポートでdxcmdによって作成されたC:\certs\ディレクトリのclientkmo_clientcert.pfxファイルです。
認証に使用する秘密鍵のパスワードを指定します。
リモートインタフェースシムが使用する証明書の発行者のルート認証局証明書を含むファイルの名前を指定します。信頼するルートファイルはBase 64形式である必要があります。たとえば、eDirectoryからの証明書のエクスポートでdxcmdによって作成されたC:\certs\ディレクトリのtrustedcert.b64ファイルです。
[OK]をクリックします。
[OK]をクリックします。