Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Indy 10 y sslvTLSv1_2 (https://www.clubdelphi.com/foros/showthread.php?t=96482)

Casimiro Notevi 02-03-2024 12:15:42

Con esa versión tiene que funcionar.
Cita:

Empezado por cervexa
Si pongo un IdSSLIOHandlerSocketOpenSSL en el formulario y voy a las opciones de SSL en el parametro de SSLVersions me ofrece solamente: sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1. Mi impresión es que debería ofrecerme tambien sslvTLSv11 y sslvTLSv12.

Puedes probar con la sslvTLSv1, de todas formas me parece raro que hoy en día estén usando una versión tan antigua.

cervexa 02-03-2024 14:36:43

Gracias por responder.
No consigo que funcione, me da "Cold not load SSL library" al intentar conectar.
He copiado las DLL que posteaste arriba en el directorio del ejecutable, en c:\windows, en c:\windows\system, en c:\windows\system32... y no consige cargarlas.

El código que utilizo, en el que he ido cambiando las opciones en todas las combinaciones posibles, es este
Código:

var
  IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  IdText: TIdText;
  sAnexo: string;
begin
  IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
  IdSMTP := TIdSMTP.Create(Self);
  IdMessage := TIdMessage.Create(Self);

  try
    with IdSSLIOHandlerSocket do begin
      SSLOptions.Method := sslvTLSv1;
      SSLOptions.Mode := sslmClient;
      SSLOptions.SSLVersions := [ sslvTLSv1 ];
    end;

    with IdSMTP do begin
      IOHandler := IdSSLIOHandlerSocket;
      UseTLS := utUseImplicitTLS;
      AuthType := satDefault;
      Port := 465;
      Host := 'smtp.micuenta.com';
      Username := 'rrhh@micuenta.com';
      Password := '7f6a8907sdfas';
    end;

    with IdMessage do begin
      From.Address := 'rrhh@micuenta.com';
      From.Name := 'Nome do Remetente';
      ReplyTo.EMailAddresses := IdMessage.From.Address;
      Recipients.Add.Text := unacuaneta@gmail.com';
      Recipients.Add.Text := 'otra@cuenta.com';
      Recipients.Add.Text := 'otra@distinta.com';
      Subject := 'Prueba de e-mail';
      Encoding := meMIME;
    end;

    IdText := TIdText.Create(IdMessage.MessageParts);
    with IdText do begin
      Body.Add('Corpo do e-mail');
      ContentType := 'text/plain; charset=iso-8859-1';
    end;

// ====================================================
// AQUI DA EL ERROR DE CONEXION--> Could not load SSL library
// ====================================================
    try
      IdSMTP.Connect;
      IdSMTP.Authenticate;
    except
      on E:Exception do
      begin
        MessageDlg('Error en la conexión o autentificación: ' +
          E.Message, mtWarning, [mbOK], 0);
        Exit;
      end;
    end;

    try
      IdSMTP.Send(IdMessage);
      MessageDlg('Mensaje enviado', mtInformation, [mbOK], 0);
    except
      On E:Exception do
      begin
        MessageDlg('Error al enviar el mensaje: ' +
          E.Message, mtWarning, [mbOK], 0);
      end;
    end;
  finally
    IdSMTP.Disconnect;
    UnLoadOpenSSLLibrary;
    FreeAndNil(IdMessage);
    FreeAndNil(IdSSLIOHandlerSocket);
    FreeAndNil(IdSMTP);
  end;
end;

Creo que pasan estas cosas:
-- No tengo la última version de las Indy: 10.6, que son las que ofrecen TLS1.2 aunque creo que el error es antes de llegar a utilizar el TLS, está en la carga de las DLL.
-- Mis indy y las DLL no deben de ser compatibles
Por esto estoy tratando de conseguir las Indy 10.6 y la última versión de openSSH ya compilada, por que no sabría hacerlo con los fuentes

No sé si me puedes ayudar en esto.
Un saludo

Casimiro Notevi 02-03-2024 16:53:12

Cita:

Empezado por cervexa (Mensaje 554698)
Gracias por responder.
No consigo que funcione, me da "Cold not load SSL library" al intentar conectar.
He copiado las DLL que posteaste arriba en el directorio del ejecutable, en c:\windows, en c:\windows\system, en c:\windows\system32... y no consige cargarlas.

Si es 32 bits entonces lo mismo tendrás que ponerlas en windows\wow64

Cita:

Empezado por cervexa (Mensaje 554698)
El código que utilizo, en el que he ido cambiando las opciones en todas las combinaciones posibles, es este

Creo que pasan estas cosas:
-- No tengo la última version de las Indy: 10.6, que son las que ofrecen TLS1.2 aunque creo que el error es antes de llegar a utilizar el TLS, está en la carga de las DLL.
-- Mis indy y las DLL no deben de ser compatibles
Por esto estoy tratando de conseguir las Indy 10.6 y la última versión de openSSH ya compilada, por que no sabría hacerlo con los fuentes
No sé si me puedes ayudar en esto.
Un saludo

TLS1.2 es más antigua, no tiene sentido que busques una indy más moderna salvo que necesites una TLS más nueva.

Casimiro Notevi 02-03-2024 16:54:41

¿Y a qué sitio quieres conectar/enviar email?

cervexa 02-03-2024 20:18:50

Cita:

Empezado por Casimiro Notevi (Mensaje 554700)
¿Y a qué sitio quieres conectar/enviar email?

A través un servidor que tengo contratado junto con el dominio.
Desde las aplicaciones de correo funciona correctamente

cervexa 02-03-2024 20:35:45

Cita:

Empezado por Casimiro Notevi (Mensaje 554699)
Si es 32 bits entonces lo mismo tendrás que ponerlas en windows\wow64

Copié las DLL a SySWOW64 y sigue sin cargarlas.

Abandono. Voy a rehacer la aplicación con Angular. Si los tres días que he perdido con esto lo hubiese dedicado a hacer la aplicación ya tendría al problema solucionado. Además, así puedo ponerla en linea y con acceso desde cualquier sitio.

Gracias por el tiempo que me habeis dedicado.

Tengo buenos de recuerdos de Delphi pero ...

Un saludo.

Casimiro Notevi 03-03-2024 15:53:30

Cita:

Empezado por cervexa (Mensaje 554701)
A través un servidor que tengo contratado junto con el dominio.
Desde las aplicaciones de correo funciona correctamente

Te pregunté por si alguno tenemos cuenta en ese sitio y probar.

cervexa 04-03-2024 08:25:19

Cita:

Empezado por Casimiro Notevi (Mensaje 554710)
Te pregunté por si alguno tenemos cuenta en ese sitio y probar.

Es un dominio mio.

De todas formas, gracías por toda la ayuda que sigues prestando desde este foro. Siempre dispuesto a ayudar.

Un saludo.

pablog2k 05-03-2024 09:10:04

Cita:

Empezado por cervexa (Mensaje 554691)
A que versión las actualizasteis y, sobre todo, donde las puedo descargar, así como las DLL de Openssh correspondientes?
Gracias

Hola, perdona por tardar ,las descargué de aquí:
https://github.com/IndySockets/Indy
las que pone 150 son las que corresponden a Delphi XE
Aun así es un proceso bastante costoso, ya que tienes que eliminar de tu sistema todo rastro de las indy antiguas y luego instalar las indy nuevas.

Si has conseguido salir del paso con un proyecto en angular, mejor

cervexa 07-03-2024 09:13:04

Gracias, por tu respuesta. Si, estoy acabando la aplicación nueva,
Un saludo

sgomez 11-03-2024 17:29:57

Si alguien necesita actualizar la librería indy a la última versión, puede consultar las instrucciones en el siguiente link:

github.com/IndySockets/Indy/wiki/Updating-Indy

Adicionalmente, el paquete sgcIndy (que es básicamente las librerías indy con soporte para las últimas librerías openSSL y TLS 1.3) dispone de un instalador que automáticamente desinstala la versión que viene por defecto en Rad Studio e instala la nueva librería. El paquete se proporciona con las librerías ya compiladas, sin código fuente. Más información en:

esegece.com/products/sgcindy

Soy el desarrollador del proyecto, cualquier cosa me pueden contactar.

Saludos,
Sergio

Casimiro Notevi 11-03-2024 19:12:43

Has hecho un gran trabajo.
¿Por qué sólo un ejecutable? ¿el código fuente ha sido modificado? ¿qué licencias has usado, BSD o MPL?

sgomez 12-03-2024 10:19:44

sgcIndy incluye algunas funcionalidades que no están incluidas en las librerías Indy. Por ejemplo, Indy sólo soporta oficialmente las librerías openSSL 1.0.2 que no se actualizan desde hace años. Los componentes que he desarrollado comercialmente, algunos están basados en Indy, por ejemplo los componentes WebSockets, algunos clientes me expresaron hace años su preocupación acerca de la falta de soporte para las últimas versiones de cifrado en Indy, esencialmente TLS 1.3, e implementé inicialmente el soporte sólo para estos componentes comerciales. Posteriormente, viendo que funcionaban bien, solicitaron si sería posible que los componentes indy como Ftp, Smtp... también podrían beneficiarse de estas mejoras, entonces fue cuando surgió la librería sgcIndy, que incluye soporte para openSSL 1.1.1 y 3.0-3.2, ALPN... Hace un año o dos, hice público el paquete sgcIndy para que cualquier usuario pudiera utilizarlo. La licencia es la menos restrictiva, BSD, básicamente Indy sólo requiere incluir en el Acerca de tu proyecto o documentación que incorpora la librería indy.


La franja horaria es GMT +2. Ahora son las 01:32:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi