Erro no openssl s_client: “comprimento dos dados é muito longo”

1

Eu tenho um servidor Ubuntu 12.04 e estou tentando configurar o Apache para autenticar usando LDAPS. Eu tive alguns problemas - veja minha pergunta anterior , onde concluí que o certificado no servidor LDAP expirou.

Então meu chefe recebeu um certificado "real" do DigiCert e o instalou em myldap.xyz.edu . E eu fui para myserver.xyz.edu e tentei openssl s_client -connect myldap.xyz.edu:636 -showcerts . Veja o que isso me dá:

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)
---

... E isso me coloca de volta no prompt de comando.

Eu procurei esse erro de "comprimento de dados muito longo" on-line, mas as explicações eram em grande parte gregas para mim. Isso é um problema com o cliente ou o servidor? Tem a ver com o certificado ou alguma outra coisa? O que posso fazer sobre isso? Obrigado!

Editar: fez mais algumas pesquisas e descobriu este tutorial da Microsoft sobre como ativar o LDAP SSL no Active Directory (devo mencionar que o nosso servidor LDAP é o Windows Server 2003 com o SP2 executando o AD). Deu-me os seguintes passos para testar se o LDAPS está ativado:

  1. Start the Active Directory Administration Tool (Ldp.exe).
  2. On the Connection menu, click Connect.
  3. Type the name of the domain controller to which you want to connect.
  4. Type 636 as the port number.
  5. Click OK.

RootDSE information should print in the right pane, indicating a successful connection.

Eu usei o desktop remoto em myldap.xyz.edu e tentei. Aqui está a saída que recebi no painel direito:

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:[email protected]; 
    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 ); 
-----------

Parece que funcionou, então estou supondo que o Active Directory está pronto para LDAPS.

Editar 2: Por sugestão do @ SilverbackNet, tentei o comando openssl s_client com a opção -debug . Aqui está a saída (redigida):

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
[...]

De lá, é o mesmo que acima. Eu também posso postar a saída completa da coluna da direita se isso for útil.

Editar 3: Decidimos desistir disso temporariamente e usar a opção do Apache LDAPVerifyServerCert off com o certificado expirado antigo por enquanto. : ^ (FWIW, meu chefe agora está pensando que é necessário obter um certificado especial, curto (1024 bytes, eu acho que ele disse) para fazer a verificação do servidor LDAP. Ele conhece os detalhes melhor do que eu, mas isso faz sentido porque a mensagem de erro está dizendo que algo é muito grande. Se / quando resolvermos o problema, tentarei postar a resposta.

    
por DLosc 25.06.2012 / 23:22

1 resposta

3

Geralmente, isso significa que você está falando SSL com um servidor não SSL. Verifique o trabalho de configuração no servidor LDAP; o novo certificado parece não estar funcionando ainda.

    
por 25.06.2012 / 23:26