У меня есть сервер Ubuntu 12.04, и я пытаюсь настроить Apache для аутентификации с помощью LDAPS. Я столкнулся с некоторыми проблемами - см. мой предыдущий вопрос, где я пришел к выводу, что срок действия сертификата на сервере LDAP истек.
Итак, мой босс получил "настоящий" сертификат от DigiCert и установил его на myldap.xyz.edu
. И я пошел в myserver.xyz.edu
и попробовал openssl s_client -connect myldap.xyz.edu:636 -showcerts
. Вот что это дает мне:
CONNECTED(00000003)
140075639178912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:504:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 16731 bytes and written 7 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1340655299
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
... И это возвращает меня в командную строку.
Я поискал в Интернете ошибку "слишком длинная длина данных", но объяснения были для меня в основном греческими. Это проблема клиента или сервера? Это связано с сертификатом или чем-то еще? Что я могу с этим поделать? Спасибо!
Редактировать: Еще немного ковырялся и нашел этот учебник Microsoft о включении LDAP через SSL в Active Directory (я должен упомянуть, что наш сервер LDAP - это Windows Server 2003 с пакетом обновления 2, работающий под управлением AD). Он дал мне следующие шаги, чтобы проверить, включен ли LDAPS:
- Запустите инструмент администрирования Active Directory (Ldp.exe).
- В меню «Подключение» щелкните «Подключиться».
- Введите имя контроллера домена, к которому вы хотите подключиться.
- Введите 636 в качестве номера порта.
- Щелкните ОК.
Информация о RootDSE должна отображаться на правой панели, указывая на успешное соединение.
Я удаленно зашел в myldap.xyz.edu
и попробовал. Вот результат, который я получил на правой панели:
ld = ldap_open("myldap.xyz.edu", 636);
Established connection to myldap.xyz.edu.
Retrieving base DSA information...
Result <0>: (null)
Matched DNs:
Getting 1 entries:
>> Dn:
1> currentTime: 06/25/2012 16:57:13 Central Standard Time Central Daylight Time;
1> subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=xyz,DC=edu;
1> dsServiceName: CN=NTDS Settings,CN=MYLDAP,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=xyz,DC=edu;
5> namingContexts: DC=xyz,DC=edu; CN=Configuration,DC=xyz,DC=edu; CN=Schema,CN=Configuration,DC=xyz,DC=edu; DC=DomainDnsZones,DC=xyz,DC=edu; DC=ForestDnsZones,DC=xyz,DC=edu;
1> defaultNamingContext: DC=xyz,DC=edu;
1> schemaNamingContext: CN=Schema,CN=Configuration,DC=xyz,DC=edu;
1> configurationNamingContext: CN=Configuration,DC=xyz,DC=edu;
1> rootDomainNamingContext: DC=xyz,DC=edu;
23> supportedControl: 1.2.840.113556.1.4.319; 1.2.840.113556.1.4.801; 1.2.840.113556.1.4.473; 1.2.840.113556.1.4.528; 1.2.840.113556.1.4.417; 1.2.840.113556.1.4.619; 1.2.840.113556.1.4.841; 1.2.840.113556.1.4.529; 1.2.840.113556.1.4.805; 1.2.840.113556.1.4.521; 1.2.840.113556.1.4.970; 1.2.840.113556.1.4.1338; 1.2.840.113556.1.4.474; 1.2.840.113556.1.4.1339; 1.2.840.113556.1.4.1340; 1.2.840.113556.1.4.1413; 2.16.840.1.113730.3.4.9; 2.16.840.1.113730.3.4.10; 1.2.840.113556.1.4.1504; 1.2.840.113556.1.4.1852; 1.2.840.113556.1.4.802; 1.2.840.113556.1.4.1907; 1.2.840.113556.1.4.1948;
2> supportedLDAPVersion: 3; 2;
12> supportedLDAPPolicies: MaxPoolThreads; MaxDatagramRecv; MaxReceiveBuffer; InitRecvTimeout; MaxConnections; MaxConnIdleTime; MaxPageSize; MaxQueryDuration; MaxTempTableSize; MaxResultSetSize; MaxNotificationPerConn; MaxValRange;
1> highestCommittedUSN: 13287969;
4> supportedSASLMechanisms: GSSAPI; GSS-SPNEGO; EXTERNAL; DIGEST-MD5;
1> dnsHostName: MYLDAP.xyz.edu;
1> ldapServiceName: xyz.edu:myldap$@XYZ.EDU;
1> serverName: CN=MYLDAP,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=xyz,DC=edu;
3> supportedCapabilities: 1.2.840.113556.1.4.800; 1.2.840.113556.1.4.1670; 1.2.840.113556.1.4.1791;
1> isSynchronized: TRUE;
1> isGlobalCatalogReady: TRUE;
1> domainFunctionality: 2 = ( DS_BEHAVIOR_WIN2003 );
1> forestFunctionality: 2 = ( DS_BEHAVIOR_WIN2003 );
1> domainControllerFunctionality: 2 = ( DS_BEHAVIOR_WIN2003 );
-----------
Похоже, это сработало, поэтому я предполагаю, что Active Directory поддерживает LDAPS.
Изменить 2: По предложению @ SilverbackNet я попробовал openssl s_client
команда с -debug
вариант. Вот (отредактированный) вывод:
CONNECTED(00000003)
write to 0x24f3470 [0x24f34f0] (226 bytes => 226 (0xE2))
0000 - 16 03 01 00 dd 01 00 00-d9 03 02 4f f3 5a 5b 38 ...........O.Z[8
[...]
00e0 - 01 01 ..
read from 0x24f3470 [0x24f8a50] (7 bytes => 7 (0x7))
0000 - 16 03 01 40 b9 02 ...@..
0007 - <SPACES/NULS>
read from 0x24f3470 [0x24f8a5a] (16567 bytes => 2889 (0xB49))
0000 - 00 4d 03 01 4f f3 5a 5b-46 43 f0 02 76 34 1c d5 .M..O.Z[FC..v4..
[...]
0b40 - 70 3a 2f 2f 63 72 6c 33-2e p://crl3.
read from 0x24f3470 [0x24f95a3] (13678 bytes => 13678 (0x356E))
0000 - 64 69 67 69 63 65 72 74-2e 63 6f 6d 2f 44 69 67 digicert.com/Dig
[...]
3560 - 65 72 20 52 6f 6f 74 20-43 41 0e er Root CA.
356e - <SPACES/NULS>
write to 0x24f3470 [0x25027e0] (7 bytes => 7 (0x7))
0000 - 15 03 01 00 02 02 16 .......
---
no peer certificate available
[...]
Оттуда это то же самое, что и выше. Я также могу опубликовать полный вывод из правого столбца, если это будет полезно.
Изменить 3: Мы решили временно отказаться от этого и использовать опцию Apache LDAPVerifyServerCert off
со старым просроченным сертификатом на данный момент. : ^ (FWIW, мой босс сейчас думает, что нужно получить специальный короткий (1024-байтовый, я думаю, он сказал) сертификат для проверки сервера LDAP. Он знает подробности лучше меня, но это имеет смысл мне, потому что в сообщении об ошибке говорится, что что-то слишком большое. Если / когда мы решим проблему, я постараюсь опубликовать ответ.
Обычно это означает, что вы говорите SSL с сервером без SSL. Проверить работу конфигурации на сервере LDAP; новый сертификат, похоже, еще не работает.