NetWorker: LDAPS 통합이 실패하고 "LDAPS 서버에 연결을 시도하는 동안 SSL 핸드셰이크 오류가 발생했습니다. 요청된 타겟에 대한 유효한 인증 경로를 찾을 수 없습니다."
Summary: NetWorker를 사용하여 AD/LDAPS 외부 인증을 추가하기 위해 authc_config 명령/스크립트를 실행하려고 합니다. LDAPS CA 인증서를 JAVA cacerts 키 저장소로 가져왔지만 "LDAPS 서버에 연결을 시도하는 동안 SSL 핸드셰이크 오류가 발생했습니다. 요청된 타겟에 유효한 인증 경로를 찾을 수 없음" 오류 메시지가 표시됩니다. ...
Symptoms
"LDAPS 서버에 연결을 시도하는 동안 SSL 핸드셰이크 오류가 발생했습니다. 요청된 타겟에 대한 유효한 인증 경로를 찾을 수 없습니다."
- NetWorker를 사용하여 AD/LDAPS 외부 인증을 추가하기 위해 authc_config 명령/스크립트를 실행하려고 합니다.
- AD/LDAP(비 SSL)를 NetWorker와 성공적으로 통합할 수 있습니다. 이 문제는 SSL(LDAPS)을 통합할 때만 나타납니다.
- LDAPS CA 인증서가 JAVA cacerts 키 저장소로 가져왔습니다.
- 사용자 환경에서 "인증서 체인"을 사용하고 있습니다.
Cause
이 문제는 체인 인증서만 Java 신뢰 키 저장소로 가져왔기 때문에 발생합니다. 인증서 체인의 경우 체인의 모든 인증서를 올바른 체인 순서로 Java 키 저장소로 올바르게 가져와야 합니다(루트 인증서에 대한 체인 수명 감소). 인증서 가져오기에 문제가 발생하면 인증서 확인 실패가 발생할 수 있습니다.
NetWorker 서버에서 LDAPS 서버로 opensl 명령을 실행할 때 식별됩니다.
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 구축 환경에서는 Java용 NRE(NetWorker Runtime Environment)를 사용합니다.
- 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를 사용할 때 인증서가 표시되지 않더라도 R은 결과를 좁히지 않고 출력을 확인하여 LDAPS 서버 및/또는 루트 CA 서버에 대한 별칭이 없음을 확인합니다. 위의 예에서 간결한 방법으로 findstr가 사용되었습니다.
- Java cacerts 신뢰 키 저장소의 기본 storepass 는 "changeit"입니다.
- JAVA_INSTALL_PATH Java 설치의 전체 경로로 교체합니다.
- authc.truststore 및/또는 authc.keystore에서 인증서를 제거하려면 -keystore에 대한 이러한 파일의 전체 경로와 -storepass에 대한 NetWorker authc 암호를 지정합니다. NetWorker 설치 중에 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
예:
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. opensl을 사용하여 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 신뢰 키 저장소로 가져온 다음 루트 인증서로 이어지는 모든 인증서를 가져옵니다.
예:
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 서비스를 재시작합니다. 인증 서비스는 시작 시 cacerts 키 저장소를 읽습니다.
Linux: nsr_shutdown
systemctl start networker
Windows: net stop nsrd /y & net start nsrd
6. LDAPS 통합을 완료합니다.
NetWorker: NWUI(NetWorker Web User Interface)에서 "AD over SSL"(LDAPS)
을 구성하는 방법Networker: LDAPS 인증을 구성하는 방법