AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy und OpenSSL 1.1.1 für Mail-Versand
Thema durchsuchen
Ansicht
Themen-Optionen

Indy und OpenSSL 1.1.1 für Mail-Versand

Ein Thema von DieDolly · begonnen am 29. Jan 2023 · letzter Beitrag vom 6. Jun 2023
Antwort Antwort
Seite 1 von 2  1 2      
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 29. Jan 2023, 17:11
Frage vorweg: funktioniert ein Mail-Versand vielleicht mit Delphi-eigenen Mitteln? Http-Requests habe ich schon vor langer Zeit von Indy auf TRESTHTTP umgestellt.

--------------------------

Die letzte OpenSSL-DLLs die ich benutzt habe war Version 1.0.2u, danach gab es ja irgendeine Änderung bzw man sollte die nicht mehr benutzen und nur noch die neuen, aber Indy war damals wohl noch nicht bereit und es gab nur Workarounds, um die neuen DLLs zu benutzen.

Hier gibt es angepasste Delphi-Dateien für OpenSSL 1.1.1
https://github.com/mezen/Indy/tree/N...tocols/OpenSSL

Und hier verschiedenste OpenSSL-Dateien
http://wiki.overbyte.eu/wiki/index.p..._components.29

Die DLLs heißen jetzt auch anders.

Was genau brauche ich, damit ich die neuen DLLs benutzen kann? Falls es nur diese Indy-Dateien sind, wohin kommen die? Die 1.1.1-Dlls oder die 3.0.7-DLLs?

In den Indy-Dateien die bei Delphi dabei sind sehe ich in IdSSLOpenSSLHeaders.pas, dass die DLL-Namen noch die alten sind. Also ssleay32.dll, libssl32.dll und libeay32.dll.

Geändert von DieDolly (29. Jan 2023 um 20:22 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 29. Jan 2023, 17:40
Zitat:
Frage vorweg: funktioniert ein Mail-Versand vielleicht mit Delphi-eigenen Mitteln? Http-Requests habe ich schon vor langer Zeit von Indy auf TRESTHTTP umgestellt.
Meines Wissens nein, eine der Funktionen, wo einem nicht klar ist, warum dies nicht längst umgestellt worden ist. Dies müsste in der Wartung zwingend ganz oben auf der Prio-Liste stehen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 29. Jan 2023, 17:49
Ich habe gerade mal bei Github in die neueste IdSSLOpenSSLHeaders.pas von for 5 Monaten, ziemlich weit unten zu finden
Delphi-Quellcode:
 {$IFDEF UNIX}
const
  {This is a workaround for some Linux distributions and a few other things
  where the symbolic link libbsl.so and libcrypto.so do not exist}

  SSL_DLL_name = 'libssl'; {Do not localize}
  SSLCLIB_DLL_name = 'libcrypto'; {Do not localize}
  SSLDLLVers : array [0..10] of string = (
    '.10',
    '.1.0.2','.1.0.1',
    // TODO: IFDEF the following for OSX only?
    '.44', // MacOS LibreSSL forked from which OpenSSL version? Sometimes found ...
    '.43', // MacOS LibreSSL forked from which OpenSSL version? Sometimes found ...
                        // TODO: Add '.41' as well?
    '.35', // MacOS LibreSSL forked from OpenSSL version 1.0.1, almost always found
    //
    '.1.0.0','.0.9.9','.0.9.8','.0.9.7','.0.9.6'
  );
  SSLDLLVersChar : array [0..26] of string = ('','a','b','c','d','e','f','g','h','i',
                                                 'j','k','l','m','n','o','p','q','r',
                                                 's','t','u','v','w','x','y','z');
  {$ENDIF}
  {$IFDEF WINDOWS}
const
  SSL_DLL_name = 'ssleay32.dll'; {Do not localize}
  //The following is a workaround for an alternative name for
  //one of the OpenSSL .DLL's. If you compile the .DLL's using
  //mingw32, the SSL .dll might be named 'libssl32.dll' instead of
  //ssleay32.dll like you would expect.
  SSL_DLL_name_alt = 'libssl32.dll'; {Do not localize}
  SSLCLIB_DLL_name = 'libeay32.dll'; {Do not localize}
  {$ENDIF}
Heißt das, für Windows gelten noch immer die alten Namen und nur für Unix die neuen? Wie soll man Indy denn dann mit OpenSSL-DLLs 1.1.1 und 3.0.X verwenden?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 29. Jan 2023, 19:58
Ich habe das Problem jetzt gelöst, indem ich die Internet Component Suite ICS installiert habe. Die Demo habe ich schon bis auf das absolute Minimum reduziert und der Mail-Versand funktioniert noch immer.
Daraus werde ich mir etwas basteln, was ich auch in anderen Projekten einfach verwenden kann. Indy dauert mir da zu lange und fliegt jetzt komplett raus.

Geändert von DieDolly (29. Jan 2023 um 20:35 Uhr)
  Mit Zitat antworten Zitat
Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
67 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 08:55
Hier gibt es angepasste Delphi-Dateien für OpenSSL 1.1.1
https://github.com/mezen/Indy/tree/N...tocols/OpenSSL

Und hier verschiedenste OpenSSL-Dateien
http://wiki.overbyte.eu/wiki/index.p..._components.29
ich nehme die OpenSSL 3.0.7 (Indy komplett ausgetauscht)
hier von 1.1.1 auf 3er umbenannt
IdOpenSSLConsts.pas

Und zusätzlich diese für Google
IdSASLXOAUTH.pas

E-Mails gehen über TLS1.3 raus. Sieht man im SMTP Header
Thomas Levering
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 09:28
Indy oder ICS? Weil ich bin gestern komplett weg von Indy. Bei ICS muss man nix selber austauschen, funktioniert alles sofort.
  Mit Zitat antworten Zitat
Thomasl

Registriert seit: 19. Jun 2006
Ort: Vreden
67 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 10:42
Indy
per Batch (im Indy) die alte komplett runter.
(Indy macht ja nicht nur E-Mail, habe bei mir alles auf den neuen SSL Handler umgebaut)
Thomas Levering
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#8

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 10:55
Ich habe damals TIdHTTP benutzt. Aber das habe ich auch alles verworfen und durch THTTPREST ersetzt.

Zitat:
(Indy macht ja nicht nur E-Mail, habe bei mir alles auf den neuen SSL Handler umgebaut)
Genau das möchte ich nicht. Sowas sollte von den Komponenten-Entwicklern zeitnah und eigenständig umgesetzt werden. Indy hängt da irgendwie total hinterher.
Der Benutzer selber sollte da nicht selber rumbasteln müssen.

Dann lieber ein unverbasteltes Internet Component Suite und wenn es Updates gibt, kann ich die sorgenfrei installieren.

Geändert von DieDolly (30. Jan 2023 um 10:59 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 12:03
Naja, hängt da Indy hinterher oder sollte EMBT Indy für die Anpassungen bezahlen? Da muss EMBT hinterher sein, dass ihre Umgebung diese Funktionalität zur Verfügung stellt.
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
Ort: NRW
87 Beiträge
 
Delphi 12 Athens
 
#10

AW: Indy und OpenSSL 1.1.1 für Mail-Versand

  Alt 30. Jan 2023, 18:39
Hallo,
die Anpassungen von "Mezen" funktionieren ja sehr gut und wenn ich die Blog-Einträge richtig interpretiere, muss der Code nur noch geprüft werden, was sich aber leider hinzieht. Zumindest ist der "Pull request" vorhanden.

Hier mein Vorgehen, damit ich Indy/Metzen mit OpenSSL 3 benutzen kann (ohne die vorhandene Installation anzupassen).

1. Open SSL von "Mezen" heruterladen: https://github.com/mezen/Indy/tree/NewOpenSSL_PR

2. Irgendwo einen neue Ordner anlegen. Z.B.: "C:\IndyOpenSsl".

3. Den gesamten Inhalt vom Download-/Unterordner "..Indy-NewOpenSSL_PR\Lib\Protocols" nach "C:\IndyOpenSsl" kopieren.

4. Den Unterordner "C:\IndyOpenSsl\changes" anlegen.

5. Aus dem Download nach "C:\IndyOpenSsl\changes" kopieren:
..Indy-NewOpenSSL_PR\Lib\System\*.inc
..Indy-NewOpenSSL_PR\Lib\System\IdCTypes.pas
..Indy-NewOpenSSL_PR\Lib\System\IdGlobal.pas

6. In den Projektoptionen "Delphi-Compiler" die "Suchpfad" eintragen:
C:\IndyOpenSsl
C:\IndyOpenSsl\changes
C:\IndyOpenSsl\dynamic
C:\IndyOpenSsl\static

7. Open SSL "1.1.1" und "3" sind fast identisch. Deshalb reicht es "C:\Delphi\IndyOpenSsl\IdOpenSSLConsts.pas" anzupassen und auf die "3er" DLLs zu verweisen (siehe unten). Damit läuft es auch mit Open SSL 3 was z.B. bei Ubuntu Linux 22.04 LTS Standard ist.

8. Zur Laufzeit lege ich dann z.B. "TIdOpenSslIoHandlerServer" oder "TIdOpenSslIoHandlerClient" und benutze es.

9. Der Parameter funktionieren etwas anders als unter 1.0.2. Beispiel:
Options.TlsVersionMinimum := TIdOpenSslVersion.Tlsv1_2;
Options.TlsVersionMaximum := TIdOpenSslVersion.Tlsv1_3;
Options.CertKey := 'C:\Zertifikat\Test.key';
Options.CertFile := 'C:\Zertifikat\Test.cer';


--- C:\Delphi\IndyOpenSsl ---
Delphi-Quellcode:
unit IdOpenSSLConsts;

interface

{$i IdCompilerDefines.inc}

const
  CLibCryptoRaw = 'libcrypto';
  CLibSSLRaw = 'libssl';

  SSLDLLVers: array [0..1] of string = ('', '.3');

  CLibCrypto =
    {$IFDEF CPU32}CLibCryptoRaw + '-3.dll'{$ENDIF}
    {$IFDEF CPU64}CLibCryptoRaw + '-3-x64.dll'{$ENDIF}
    ;
  CLibSSL =
    {$IFDEF CPU32}CLibSSLRaw + '-3.dll'{$ENDIF}
    {$IFDEF CPU64}CLibSSLRaw + '-3-x64.dll'{$ENDIF}
    ;

implementation

end.

Geändert von Thomas Horstmann (30. Jan 2023 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz