일부 시스템은 ldap을 통해 ldap에 연결할 수 없지만 다른 시스템은 와일드 카드 인증서입니까?


15

Nold eDirectory 8.8 서버에 ldaps 연결을 시도 할 때 때때로 TLS_REQCERT never클라이언트 서버 ldap.conf 파일 에 넣어야 합니다. 분명히 이것은 나쁜 생각입니다.

내가 실행하는 명령은 실제로 작동하는 자격 증명이있는 것과 같습니다 ...

ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"

우분투 13.10에서는 정상적으로 작동합니다.

SLES에서는 제대로 작동합니다.

CentOS 6.5에서는 다음을 반환합니다.

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

이제 가져온 인증서는 DigiCert에서 구입 한 와일드 카드 인증서입니다. 동료가 일부 시스템에 와일드 카드 문제가 있음을 나타내는 일부 보고서를 발견했습니다.

그러면 와일드 카드 인증서가 비난받을까요? 그렇다면 어떻게 해결합니까?

와일드 카드 인증서가 아니면 무엇입니까?

Andrew Schulman의 제안에 따라 -d1ldapsearch 명령을 추가 했습니다. 내가 끝내었던 것은 다음과 같습니다.

ldap_url_parse_ext(ldaps://ldap.example.org)
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.org:636/??base)
Enter LDAP Password: 
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ldap.example.org:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.225.0.24:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

그 말에서 CentOS는 DigiCert를 신뢰하지 않습니까? 아니면 CentOS에 신뢰할 수있는 발급자 목록이 없습니까?


1
"LDAP 서버에 접속할 수 없음"은 서버가 해당 클라이언트 시스템에서 도달 할 수없는 것처럼 들립니다. 실제로 연결할 수 있는지 먼저 확인 했습니까? 예를 들어 telnet ldapserver ldaps또는 openssl s_client -connect ldapserver:636.
Richard E. Silverman

예, 서버에 연결할 수 있음을 확인했습니다. 결국 전혀 연결할 수 없으면 전혀 작동하지 않습니다.
David R.

세 개의 다른 클라이언트 호스트를 언급했습니다. 작동하지 않는 연결은 네트워킹 문제로 인해 연결되지 않았을 수 있지만 다른 연결은 연결할 수 없습니다.
Richard E. Silverman

내 게시물이 모든 호스트에서 ldap.conf 파일을 편집하고 있다는 것이 분명하다고 생각했습니다. 파일에 줄을 추가했을 때와 마찬가지로 작동했지만 줄이 없으면 효과가 없었습니다. 따라서 연결 문제가 아닙니다.
David R.

처음에 게시물을 읽을 때 분명하지 않았지만 지금은 무슨 의미인지 알 수 있습니다. 어쨌든, 추가 한 TLS 디버깅 정보는 문제를 보여줍니다. 후속 답변을 추가했습니다.
Richard E. Silverman

답변:


9

ldapsearch는 / etc / openldap / cacerts에서 신뢰할 수있는 CA 인증서의 저장소를 찾고 있으며 설정되지 않았기 때문에 트러스트 체인을 구성 할 수 없으므로 인증서를 거부합니다. ldapsearch가 OpenSSL을 사용했다면, 예를 들어 Red Hat "authconfig"프로그램에 의해 생성 된 "hashdir"형식 모음 또는 신뢰할 수있는 인증서 목록이있는 단일 파일이 필요합니다. 여기서 "moznss"에 대한 참조는이 ldapsearch가 Mozilla NSS에 대해 빌드 된 것으로 제안합니다.이 경우 "certutil"을 사용하여 cert db를 만들거나 시스템 NSS 인증서 저장소 (있는 경우)를 지정해야합니다. .

작동하는 시스템에서 ldapsearch에는 작동하는 인증서 저장소가 있어야합니다. OpenLDAP 패키지가 OpenSSL에 대해 대신 빌드되었거나 작동 가능한 NSS 스타일 저장소가 있기 때문일 수 있습니다.


2
/etc/openldap/certs인증서 저장소가있는 곳입니다. cacerts가 아닙니다. /etc/openldap/ldap.conf에서로 변경 TLS_CACERTDIR /etc/openldap/cacerts했고 TLS_CACERTDIR /etc/openldap/certsldapsearch 명령이 작동하기 시작했습니다. 감사!
David R.

Ubuntu 16.04에 ldapsearch가 설치되어 있으며 / etc / openldap 디렉토리가 없습니다.
vcardillo

13

ldapsearch는 TLS 인증서를 확인할 수 없으면 "LDAP 서버에 접속할 수 없습니다"라고 표시합니다. -d1ldapsearch 명령에 추가 하고 "TLS :"로 시작하는 출력 행을 확인하여 TLS 연결 실패 및 이유에 대한 자세한 정보를 얻으십시오.


귀하의 제안에 따라 질문을 편집했습니다. 감사!
David R.

8

솔루션은 설치에 따라 다릅니다.

  • 유효하지 않은 인증서를 사용하는 경우 다음을 사용하여 구성 /etc/openldap/ldap.conf을 강제로 수락 할 수 있습니다

    TLS_REQCERT allow
    

    또는

    TLS_REQCERT never
    
  • 유효한 인증서를 사용하는 경우 아마도 ldap 설치가 신뢰할 수있는 CA 인증서의 저장소가 어디에 있는지 모를 것입니다 (아마 OpenSSL 설치에 따라 다름). 그런 다음 위치를 설정하고 다음을 사용하여 강제 검사 구성 /etc/openldap/ldap.conf을 시도 할 수 있습니다

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacert이 경로이거나 경로에있을 수 있습니다. CA의 인증서 체인을 포함해야합니다. 신뢰할 수있는 인증서 목록이 포함 된 단일 파일 일 수 있습니다.

참고 경로는 LDAP 공급자에 따라 다릅니다. 그것은 수 /etc/ldap또는 /etc/openldap정도.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.