Ver Mensaje Individual
  #5  
Antiguo 18-03-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Reputación: 18
fide_uci Va por buen camino
Despues de un tiempo intentando establecer conexion con mi servidor logre hacerlo utilizando el siguiente codigo.

Código Delphi [-]
try
  ssl.ConnectTimeout := 3500;
  ssl.Open;
  ssl.StartSSL;
  ssl.PassThrough := True;
  ssl.SSLOptions.Mode := sslmUnassigned;
  ssl.SSLOptions.Method := sslvSSLv23;
  IMAP41.IOHandler := SSL;

  IMAP41.Connect(True);
except On E: Exception do
  Memo3.Lines.Add( Format('Exception "%s": %s', [E.ClassName, E.Message]) );
end;

Ya el host, puerto, usuario y contraseña se los puse al componente directo. Entonces agregue una pequeña porsion de codigo en los eventos OnStatus del SSLHandler y del idIMAP41 y lo que se ve es esto cuando intento conectarme.

Código:
Resolving hostname imap.edu.com
Connecting to 10.10.9.120
StatusInfo: SSL status: "before/connect initialization"
StatusInfo: SSL status: "before/connect initialization"
StatusInfo: SSL status: "SSLv2/v3 write client hello A"
StatusInfo: SSL status: "SSLv3 read server hello A"
StatusInfo: SSL status: "SSLv3 read server certificate A"
StatusInfo: SSL status: "SSLv3 read server done A"
StatusInfo: SSL status: "SSLv3 write client key exchange A"
StatusInfo: SSL status: "SSLv3 write change cipher spec A"
StatusInfo: SSL status: "SSLv3 write finished A"
StatusInfo: SSL status: "SSLv3 flush data"
StatusInfo: SSL status: "SSLv3 read finished A"
StatusInfo: SSL status: "SSL negotiation finished successfully"
StatusInfo: SSL status: "SSL negotiation finished successfully"
StatusInfo: Cipher: name = AES256-SHA; description = AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
; bits = 256; version = TLSv1/SSLv3;
Pero entonces me salta esta exception.

Código:
Exception "EAssertionFailed": Assertion failure (D:\Cosas de Programación\Programas y componentes\Cosas de la Indy\indy10\Protocols\IdSSLOpenSSL.pas, line 1435)
Cuando miro la version de Indy que estoy utilizando veo estos datos.

Código:
  gsIdVersion = '10.2.3'; {do not localize}
  gsIdProductName = 'Indy';  {do not localize}
Las librarias que estoy utilizando son:

Código:
openssl-0.9.8i-i386-win32
Alguien tiene una idea de por que ocurre esto?

Aqui comentan algo al respecto pero no entiendo mucho.

http://forums2.atozed.com/viewtopic.php?f=7&p=4403

Si alguien me pudiera explicar se los agradeceria muchisimo.

Ha en esa linea del archivo "IdSSLOpenSSL.pas" lo que se ve es esto.
Es decir es en este procedimiento que se dispara la exception.

Código:
procedure TIdSSLIOHandlerSocketOpenSSL.OpenEncodedConnection;
begin
  Assert(Binding<>nil);

  if not Assigned(fSSLSocket) then begin
    fSSLSocket := TIdSSLSocket.Create(Self);
  end;
  Assert(fSSLSocket.fSSLContext=nil);

  fSSLSocket.fSSLContext := fSSLContext;

  if IsPeer then begin
    fSSLSocket.Accept(Binding.Handle);
  end else begin
    fSSLSocket.Connect(Binding.Handle);
  end;
  
  fPassThrough := False;
end;

Última edición por fide_uci fecha: 18-03-2010 a las 13:13:40.
Responder Con Cita