Среда: Mac OS X 10.6.3 установка / импорт главного сервера MacOS X 10.5.8 Open Directory. После этого обновления LDAP + TLS не работает на наших клиентах MacOS X 10.5, 10.6, CentOS, Debian и FreeBSD (Apache2 и PAM).
Тестирование с использованием ldapsearch:
ldapsearch -ZZ -H ldap://gnome.darkhorse.com -v -x -b "dc=darkhorse,dc=com" '(uid=donaldr)' uid
... не работает с:
ldap_start_tls: Protocol error (2)
Тестирование добавления "-d 9" завершается ошибкой:
res_errno: 2, res_error: <unsupported extended operation>, res_matched: <>
Тестирование без использования STARTTLS или с LDAPS:
ldapsearch -H ldap://gnome.darkhorse.com -v -x -b "dc=darkhorse,dc=com" '(uid=donaldr)' uid
ldapsearch -H ldaps://gnome.darkhorse.com -v -x -b "dc=darkhorse,dc=com" '(uid=donaldr)' uid
... успешно:
# donaldr, users, darkhorse.com
dn: uid=donaldr,cn=users,dc=darkhorse,dc=com
uid: donaldr
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
result: 0 Success
(Мы указываем "TLS_REQCERT never" в /etc/openldap/ldap.conf)
Тестирование с openssl:
openssl s_client -connect gnome.darkhorse.com:636 -showcerts -state
... успешно:
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 /C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=Dark Horse Network/CN=DHC MIS Department
verify error:num=19:self signed certificate in certificate chain
verify return:0
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
---
Certificate chain
0 s:/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=MIS/CN=gnome.darkhorse.com
i:/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=Dark Horse Network/CN=DHC MIS Department
1 s:/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=Dark Horse Network/CN=DHC MIS Department
i:/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=Dark Horse Network/CN=DHC MIS Department
---
Server certificate
-----BEGIN CERTIFICATE-----
<deleted for brevity>
-----END CERTIFICATE-----
subject=/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=MIS/CN=gnome.darkhorse.com
issuer=/C=US/ST=Oregon/L=Milwaukie/O=Dark Horse Comics, Inc./OU=Dark Horse Network/CN=DHC MIS Department
---
No client certificate CA names sent
---
SSL handshake has read 2640 bytes and written 325 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: D3F9536D3C64BAAB9424193F81F09D5C53B7D8E7CB5A9000C58E43285D983851
Session-ID-ctx:
Master-Key: E224CC065924DDA6FABB89DBCC3E6BF89BEF6C0BD6E5D0B3C79E7DE927D6E97BF12219053BA2BB5B96EA2F6A44E934D3
Key-Arg : None
Start Time: 1271202435
Timeout : 300 (sec)
Verify return code: 0 (ok)
Итак, мы считаем, что демон slapd читает наш сертификат и записывает его клиентам LDAP.
Администратор Apple Server добавляет ProgramArguments ("-h ldaps: ///") в /System/Library/LaunchDaemons/org.openldap.slapd.plist и TLSCertificateFile, TLSCertificateKeyFile, TLSCACertificateFile и TLSCertificatePassphraseTopend_set/etcapld_set_settings/etcapld_et_setupd_setupd_settings включение SSL в разделе LDAP службы Open Directory. Хотя этого кажется достаточно для LDAPS, похоже, что для TLS этого недостаточно. Сравнение наших конфигурационных файлов 10.6 и 10.5 slapd.conf и slapd_macosxserver.conf не дает никаких подсказок. Замена нашего сертификата (созданного с помощью самоподписанного CA) на самоподписанный сертификат, созданный администратором Apple Server, не приводит к изменению результатов ldapsearch.
Установка -d на 256 в журналах /System/Library/LaunchDaemons/org.openldap.slapd.plist:
4/13/10 5:23:35 PM org.openldap.slapd[82162] conn=384 op=0 EXT oid=1.3.6.1.4.1.1466.20037
4/13/10 5:23:35 PM org.openldap.slapd[82162] conn=384 op=0 do_extended: unsupported operation "1.3.6.1.4.1.1466.20037"
4/13/10 5:23:35 PM org.openldap.slapd[82162] conn=384 op=0 RESULT tag=120 err=2 text=unsupported extended operation
Любые советы по отладке очень ценятся.
- Том Кишель
P.S.
Электронное письмо от Apple подтверждает, что они могут воспроизвести это (LDAP + STARTLS не работает, но LDAPS работает на 10.6, но оба работают на 10.5) и открыли внутренний отчет об ошибке.