Ошибка установления связи LDAPS errno 21 Это каталог - обнаружен конец файла

Я установил сервер сквозной аутентификации OpenLDAP в CentOS 7 .

Он будет аутентифицировать пользователей через LDAP в базе данных, размещенной в Microsoft Active Directory.

Я могу получить успешный ответ на запрос, если использую LDAP: //

Однако LDAPS: // выдаст ошибки подтверждения сертификата.

Я использую сертификат, приобретенный у GoDaddy в формате PFX.

Я нашел несколько возможных решений, но пока ничего не работает.

Я пробовал:

  1. Отключение SELinux для тестирования
  2. Преобразовал сертификат PFX в PEM, а также в DER
  3. Использовал certutil, как описано здесь, для создания базы данных MozNSS: http://www.openldap.org/faq/data/cache/1514.html

    pk12util -d / path / to / certdb -i /path/to/file.p12

Я нашел это страница https://stackoverflow.com/questions/13732826/convert-pem-to-crt-and-key Но я не знаю, какие команды использовать для получения сертификата правильного формата для openLDAP.

Я пробовал следующие:

openssl x509 -outform der -in certificate.pem -out certificate.der
openssl x509 -outform der -in certificate.pem -out certificate.crt

Когда я запускаю ldapsearch:

ldapsearch -H ldaps://192.168.1.69 -b "OU=Administration,DC=domain,DC=com" -v -LLL -D "CN=ServiceLDAP,OU=Administration,DC=domain,DC=com" "(samaccountname=someuser)" -w secretpass -d1

Я получаю следующие ошибки:

ldap_url_parse_ext(ldaps://192.168.1.32)
ldap_initialize( ldaps://192.168.1.32:636/??base )
ldap_create
ldap_url_parse_ext(ldaps://192.168.1.32:636/??base)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP 192.168.1.32:636
ldap_new_socket: 4
ldap_prepare_socket: 4
ldap_connect_to_host: Trying 192.168.1.32:636
ldap_pvt_connect: fd: 4 tm: -1 async: 0
attempting to connect:
connect success
TLS: certdb config: configDir='/etc/openldap/certs' tokenDescription='ldap(0)' certPrefix='' keyPrefix='' flags=readOnly
TLS: using moznss security dir /etc/openldap/certs prefix .
TLS: error: tlsm_PR_Recv returned 0 - error 21:Is a directory
TLS: error: connect - force handshake failure: errno 21 - moznss error -5938
TLS: can't connect: TLS error -5938:Encountered end of file.
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
1
задан 23 May 2017 в 15:41
1 ответ

Я смог исправить проблему.

Правильный формат для сертификата и ключа:

openssl pkcs12 -in ./ACertFromGoDaddy.pfx -nocerts -out privatekey.pem -nodes
openssl pkcs12 -in ./ACertFromGoDaddy.pfx -nokeys -out publiccert.pem -nodes

Я поместил эти сертификаты в . /openldap/certs, и я смог настроить slapd на чтение их оттуда, сделав файл ldif и загрузив его с помощью slapadd:

slapadd -n0 -F /etc/openldap/slapd.d/ -l ./mod_ssl.ldif

Содержимое моего файла mod_ssl.ldif:

dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/publiccert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/publiccert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/privatekey.pem

Затем я смог выполнить ldap поиск локально и удаленно:

ldapsearch -H ldaps://192.168.1.69 -b "OU=Administration,DC=domain,DC=com" -v -LLL -D "CN=ServiceLDAP,OU=Administration,DC=domain,DC=com" "(samaccountname=someuser)" -w secretpass -d1
0
ответ дан 4 December 2019 в 05:42

Теги

Похожие вопросы