TLS를 사용하여 Linux 기반 장치의 LDAP를 LDAP 서버에 바인딩하려고 하는데 헛수고입니다. 서버는 단순 인증과 TLS 인증을 지원합니다. 먼저 다음 ldapsearch 명령을 사용하여 TLS 없이 성공적으로 바인딩했습니다.
ldapsearch -x -b "dc=lab,dc=local" \
-H ldap://[SERVER.IP.ADDRESS] \
-D "uid=myuser,cn=users,cn=accounts,dc=lab,dc=local" \
-W "uid=myuser"
사용자의 비밀번호를 묻는 메시지를 표시하고 사용자를 성공적으로 인증합니다. 다음과 같이 TLS를 사용하여 바인딩하려고 하면:
LDAPTLS_REQCERT=never ldapsearch \
-x -ZZ -b "dc=lab,dc=local" \
-H ldap://[SERVER.IP.ADDRESS] \
-D "uid=myuser,cn=users,cn=accounts,dc=lab,dc=local" \
-W "uid=myuser" cn uid
비밀번호를 묻는 메시지가 표시되지 않으므로 -d 1
더 많은 디버그 메시지를 표시하는 옵션을 추가했습니다. 이 경우 다음과 같은 결과가 나타납니다.
ldap_url_parse_ext(ldap://nodo-1.labsecurity.local)
ldap_create
ldap_url_parse_ext(ldap://nodo-1.labsecurity.local:389/??base)
ldap_extended_operation_s
ldap_extended_operation
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP nodo-1.labsecurity.local:389
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 192.168.5.214:389
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
ldap_open_defconn: successful
ldap_send_server_request
ber_scanf fmt ({it) ber:
ber_scanf fmt ({) ber:
ber_flush2: 31 bytes to sd 3
ldap_result ld 0x1005c038 msgid 1
wait4msg ld 0x1005c038 msgid 1 (infinite timeout)
wait4msg continue ld 0x1005c038 msgid 1 all 1
** ld 0x1005c038 Connections:
* host: nodo-1.labsecurity.local port: 389 (default)
refcnt: 2 status: Connected
last used: Thu Jan 1 00:49:07 1970
** ld 0x1005c038 Outstanding Requests:
* msgid 1, origid 1, status InProgress
outstanding referrals 0, parent count 0
ld 0x1005c038 request count 1 (abandoned 0)
** ld 0x1005c038 Response Queue:
Empty
ld 0x1005c038 response count 0
ldap_chkResponseList ld 0x1005c038 msgid 1 all 1
ldap_chkResponseList returns ld 0x1005c038 NULL
ldap_int_select
read1msg: ld 0x1005c038 msgid 1 all 1
ber_get_next
ber_get_next: tag 0x30 len 95 contents:
read1msg: ld 0x1005c038 msgid 1 message type extended-result
ber_scanf fmt ({eAA) ber:
read1msg: ld 0x1005c038 0 new referrals
read1msg: mark request completed, ld 0x1005c038 msgid 1
request done: ld 0x1005c038 msgid 1
res_errno: 0, res_error: <Start TLS request accepted.Server willing to negotiate SSL.>, res_matched: <>
ldap_free_request (origid 1, msgid 1)
ldap_parse_extended_result
ber_scanf fmt ({eAA) ber:
ber_scanf fmt (a) ber:
ldap_parse_result
ber_scanf fmt ({iAA) ber:
ber_scanf fmt (x) ber:
ber_scanf fmt (}) ber:
ldap_msgfree
연결이 설정된 것 같지만 어느 시점에서 중단되고 계속되지 않습니다. LDAPTLS_REQCERT=never를 사용했는데 이는 CA 인증서가 필요하지 않음을 의미합니다. LDAP-TLS 바인딩이 작동하지 않는 이유를 더 잘 이해하도록 도와줄 수 있는 사람이 있습니까? 감사해요.