2015-01-08 2 views
0

ldapsearch를 사용하여 사용자를 검색하고 싶습니다.LDAP 명령 줄의 인증서를 기반으로 LDAP 검색 사용자

하지만 호스팅 제공 업체가 일부 인증서 (CA)를 제공했습니다. 그 인증서를 ldapconf에 추가했습니다.

하려면 openssl s_client가 -connect 호스트 이름을 다음과 같이 그래서 ldapsearch 명령을 실행하기 전에 난하려면 openssl을 실행하고 -CAfile /certificate.pem

하려면 openssl 나는 다른 터미널에서 다음 명령을 실행하고 를 통해 연결 한 후

ldapsearch -h hostname -p portno -D [email protected], dc=global,dc=example,dc=net 

는 이제 ldapsearch 명령

을 실행하는 동안 인증서를 사용할 수있는 방법이 알고 싶어요

답변

1

이 수행하여 행할 수 있어야한다 :

env LDAPTLS_CACERT=/certificate.pem ldapsearch -h hostname -p portno -D [email protected], dc=global,dc=example,dc=net 

을 내가 사용하는 것, 비록 :

env LDAPTLS_CACERT=/certificate.pem ldapsearch -H ldaps://hostname:portno/ -D [email protected], dc=global,dc=example,dc=net 

오히려 추론보다, 그것은 LDAPS으로 시도하도록.

오류가 계속 발생하는 경우 더 나은 오류 메시지를 표시하는 -ZZ을 추가 할 수 있습니다.

명백한 잡아 당김은 만료 된 인증서를 사용하고 있습니다. 두 번째로 가장 명확한 잡아는 인증서에있는 요청과 동일한 이름을 사용하지 않습니다. 당신은 openssl s_client -connect hostname:portno를 사용하여 인증서 서버를 읽을 수 있습니다 - 같은 라인을 읽고 뭔가가있을 것입니다 : 당신이 CN=... 항목에 나열된의 ldapsearch 요청의 호스트 이름이 호스트 이름과 일치하는지 확인해야

subject=/C=IE/CN=hostname.domain.local 

. 일치하지 않으면 연결할 수 없습니다 (간단한 인증서 확인입니다. 다른 이름이 있으면 시도 할 수 있습니다 : openssl x509 -text -noout -in /certificate.pem | grep DNS)

Mac OSX가 LDAPTLS_CACERT을 준수하지 않는다는 경고가 있습니다 환경 변수. cert를 키 체인으로 가져와야합니다 (이 경우 OSX의 해결 방법을 알지 못합니다).

+0

감사합니다. @Petesh. 하지만이 명령을 ldap_sasl_interactive_bind_s로 가져 오는 중 오류가 발생했습니다. LDAP 서버 (-1)에 연결할 수 없습니다. – AnNaMaLaI

+0

먼저 파일이 읽혔는지 확인하십시오. strace를 사용하여 파일이 열려 있는지 확인하십시오. 더 나은 디버깅 정보를 제공하는'-ZZ' 옵션을 시도해 볼 수도 있습니다. 일반적인 오류는 'TLS : 호스트 이름이 피어 인증서에서 CN과 일치하지 않습니다.'와 같습니다 (즉, 인증서에 제공된 것과 동일한 호스트 이름을 사용하지 않고 있음). 'openssl s_client -connect hostname : portno'를 사용하여 CN을 검사 할 수 있습니다 -'CN ='에 대해'subject ='를 읽는 줄을 확인하십시오, 그리고 이것을 호스트 이름으로 사용해야합니다. – Petesh