NetWorker:LDAPSの統合が失敗し、「AN SSL handshake error occurred while attempting to connect to LDAPS server: Unable to find valid certification path to requested target」
Summary: NetWorkerを使用してAD/LDAPS外部認証を追加するために、authc_configコマンド/スクリプトを実行しようとしています。LDAPS CA証明書がJAVA cacertsキーストアにインポートされましたが、「AN SSL handshake error occurred while attempting to LDAPS server: unable to find valid certification path to requested target」というエラー メッセージが表示されます。 ...
Symptoms
が表示される状況について説明します。「AN SSL handshake error occurred while attempting to LDAPS server: unable to find valid certification path to requested target」
- NetWorkerを使用してAD/LDAPS外部認証を追加するために、authc_configコマンド/スクリプトを実行しようとしています。
- AD/LDAP(非SSL)をNetWorkerと正常に統合できます。この問題は、SSL(LDAPS)を統合する場合にのみ発生します。
- LDAPS CA証明書がJAVA cacertsキーストアにインポートされました。
- ご使用の環境で「証明書チェーン」を使用している。
Cause
この問題は、チェーン証明書のみがJava信頼キーストアにインポートされたために発生しています。 証明書チェーンの場合は、チェーン内のすべての証明書を適切なチェーン順序(下位チェーンからルート証明書)でJavaキーストアに適切にインポートする必要があります。証明書のインポートで問題が発生すると、証明書の検証が失敗します。
これは、NetWorkerサーバーからLDAPSサーバーに openssl コマンドを実行するときに識別されます。
OPENSSL_INSTALL_PATH\bin> openssl s_client -showcerts -connect ldaps-server.lab.emc.local:636 CONNECTED(00000124) depth=1 DC = LOCAL, DC = EMC, DC = LAB, CN = LDAPS-SERVER --- Certificate chain 0 s:/CN=LDAPS-SERVER.LAB.EMC.LOCAL i:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER -----BEGIN CERTIFICATE----- << removed for brevity >> -----END CERTIFICATE----- 1 s:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER i:/CN=ROOTCA-SERVER -----BEGIN CERTIFICATE----- << removed for brevity >> -----END CERTIFICATE-----
Resolution
証明書エラーを解決するには、次の手順に従います。
1.Java cacerts信頼キーストアから、以前にインポートされた証明書をすべて削除します。
このKBのプロセスでは、Java keytool コマンドを使用します。ディレクトリ(cd)をJava binディレクトリに変更する必要がある場合があります。Javaのインストールとオペレーティング システムに応じて、これは異なる場合があります。keytoolコマンドは、Javaインストールのbinディレクトリにあります。ほとんどのNetWorker実装では、NetWorker Runtime Environment(NRE)for Javaを使用します。
- Linuxの場合/opt/nre/java/latest/bin
- Windowsの場合:C:\Program Files\NRE\java\jre#.#.#_###\bin
JAVA_INSTALL_PATH\bin> keytool -list -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit | findstr LDAPS-SERVER
ldaps-server, DATE-IMPORTED, trustedCertEntry,
JAVA_INSTALL_PATH\bin> keytool -list -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit | findstr ROOTCA-SERVER
rootca-server, DATE-IMPORTED, trustedCertEntry,
- LDAPS-SERVER と ROOTCA-SERVER は例にすぎません。これらの値は、LDAPSサーバーとルートCAサーバーに対応するエイリアスに置き換える必要があります(通常はホスト名が使用されます)。
- findstr/grepの使用時に証明書が表示されない場合でも、結果を絞り込まずに出力を表示し、LDAPSサーバーおよび/またはルートCAサーバーのエイリアスがないことを確認します。上記の例では、findstrが簡潔にするために使用されました。
- Java cacertsトラスト キーストアのデフォルトの ストアパス は「changeit」です。
- JAVA_INSTALL_PATHをJavaインストールのフル パスに置き換えます。
- authc.truststoreおよび/またはauthc.keystoreから証明書を削除するには、-keystoreのこれらのファイルへのフル パスと-storepassのNetWorker authcパスワードを指定します。NetWorker authcキーストアのパスワードは、NetWorkerのインストール時に構成されます。
- Linuxの場合
- /opt/nsr/authc-server/conf/authc.truststore
- /nsr/authc/conf/authc.keystore
- Windowsの場合:
- C:\Program Files\EMC NetWorker\nsr\authc-server\conf\authc.truststore
- C:\Program Files\EMC NetWorker\nsr\authc-server\tomcat\conf\authc.keystore
- Linuxの場合
証明書が表示された場合は、削除する必要があります(それ以外の場合は、次のステップに進みます)。
keytool -delete -alias ALIAS_NAME -keystore "PATH_TO_CACERTS_FILE" -storepass PASSWORD
Example:
JAVA_INSTALL_PATH\bin> keytool -delete -alias LDAPS-SERVER -keystore ..\lib\security\cacerts -storepass changeit
JAVA_INSTALL_PATH\bin> keytool -delete -alias ROOTCA-SERVER -keystore ..\lib\security\cacerts" -storepass changeit
2.opensslを使用してLDAPSサーバーに接続します。
openssl s_client -showcerts -connect LDAPS_SERVER:636
例:
OPENSSL_INSTALL_PATH\bin> openssl s_client -showcerts -connect ldaps-server.lab.emc.local:636
CONNECTED(00000124)
depth=1 DC = LOCAL, DC = EMC, DC = LAB, CN = LDAPS-SERVER
---
Certificate chain
0 s:/CN=LDAPS-SERVER.LAB.EMC.LOCAL
i:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER
-----BEGIN CERTIFICATE-----
<< removed for brevity >>
-----END CERTIFICATE-----
1 s:/DC=LOCAL/DC=EMC/DC=LAB/CN=ROOTCA-SERVER
i:/CN=ROOTCA-SERVER
-----BEGIN CERTIFICATE-----
<< removed for brevity >>
-----END CERTIFICATE-----
3. a. -----BEGIN CERTIFICATE-----ヘッダー、-----END CERTIFICATE-----フッターなどのチェーン証明書をテキスト ファイルにコピーします。たとえば、 chain.cer
3, b. -----BEGIN CERTIFICATE-----ヘッダーと-----END CERTIFICATE----- フッターを含むルート証明書をテキスト ファイル(root.cer
4など)にコピーします。チェーン証明書をJava cacertsトラスト キーストアにインポートしてから、ルート証明書に至るまでのすべての証明書をインポートします。
Example:
JAVA_INSTALL_PATH\bin> keytool -import -alias LDAPS-SERVER -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit -file "PATH_TO\chain.cer"
<< removed for brevity >>
Trust this certificate? [no]: y
Certificate was added to keystore
JAVA_INSTALL_PATH\bin> keytool -import -alias ROOTCA-SERVER -keystore "JAVA_INSTALL_PATH\lib\security\cacerts" -storepass changeit -file "PATH_TO\root.cer"
<< removed for brevity >>
Trust this certificate? [no]: y
Certificate was added to keystore
- エイリアス値を、ご使用の環境に対応するエイリアス(LDAPSおよびCAサーバーのホスト名など)に置き換えます。
- PATH_TOを、chain.cerおよびroot.cer用に作成したファイルの場所へのフル パスに置き換えます。
- インポート中に追加のエラーが出力されていないことを確認します。
5.NetWorkerサービスを再起動します。authcサービスは、起動時にcacertsキーストアを読み取ります。
Linuxの場合nsr_shutdown
systemctl start networker
Windows: net stop nsrd /y & net start nsrd
6.LDAPS統合を完了します。
NetWorker:NWUI(NetWorker Webユーザー インターフェイス)から「AD over SSL」(LDAPS)
を構成する方法Networker:LDAPS認証を構成する方法。