Delphi-PRAXiS
Seite 10 von 11   « Erste     8910 11      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Indy OpenSSL Sicherheitsupdates (https://www.delphipraxis.net/114945-indy-openssl-sicherheitsupdates.html)

mezen 22. Jun 2021 07:09

AW: Indy OpenSSL Sicherheitsupdates
 
@ioster:
TLS ist kein leichtes Protokoll und bringt einige Eigenschaften mit sich, TLS ist schwierig "mal eben" zu begreifen und entsprechend dem Verständnis sinnhaft und zielgerichtet einzusetzen.

Aktuelle Infos kurzgefasst:
  • Indy nutzt OpenSSL
  • Indy 9 brauchte spezielle OpenSSL Binaries, welche für Indy angepasst waren. Indy 10 braucht das nicht mehr und es reichen unveränderte aus
  • Mitgeliefertes Indy kann nur maximal OpenSSL 1.0.2 (und daher TLS 1.2)
  • OpenSSL 1.0.2 ist Ende 2019 aus dem Support gefallen und wird nicht mehr mit Sicherheitsupdates versorgt
  • Aktuell neuste und stabile Version ist OpenSSL 1.1.1, Vorgänger war OpenSSL 1.1.0, dessen Vorgänger OpenSSL 1.0.2 war
  • Nachfolger OpenSSL 3 ist aktuell frisch in der Beta, nach etwas über 1 Jahr in der Alpha
  • Bisher genutzten OpenSSL Binaries wurden von https://opendec.wordpress.com/ erstellt, welcher seine Build Umgebung nicht mehr auf Versionen nach 1.0.2 umgestellt hat
  • OpenSSL Version 1.1.0 hat API Änderungen gegenüber OpenSSL 1.0.2, was auch Änderungen in Indy selber benötigt

So weit, so schlecht die Infos.
Aber es gibt weiterhin Hoffnung: Es gibt bereits Anpassungen für Indy, damit Indy auch OpenSSL 1.1.1 nutzen kann: https://www.delphipraxis.net/204185-...tls-1-3-a.html. Dies befindet sich noch im GitHub PR und wartet darauf, dass es nach Indy gemergt wird. Die Änderung läuft auch stabil, ist bei unseren Kunden bereits dauerhaft aktiv und viel genutzt.

@ioster:
Du willst dir vllt als Alternative THttpClient von Emba angucken. Dies ist ein Versuch mittels System APIs, und nicht mit Indy, HTTP nutzbar zu machen. Und das sogar plattformübergreifend (was Indy ja auch bereits kann). Auf Windows wird dafür auf die WinAPIs für WinHTTP zurück gegriffen. Somit brauchst du keine OpenSSL DLLs, da Windows das eigene SChannel nutzt.

@Codehunter:
Danke für deinen Bump bei meinem MR. Aktuell laufen die Änderungen gut, wie ich schrieb, auch schon bei unseren Kunden im Einsatz. Ich muss nur halt warten bis Remy mit dem Review fertig ist. Da er aber nur rein den Code anguckt, und das doch ein paar viele Zeilen beinhaltet, dauert das leider. Mehr kann ich leider nicht tun.

philipp.hofmann 22. Jun 2021 07:09

AW: Indy OpenSSL Sicherheitsupdates
 
Und falls es nicht unbedingt Indy sein muss: bei der Implementierung mit TNetHTTPClient (und TNetHTTPRequest) wird automatisch https über die vorhandenen OS-Komponenten gelöst. Das ist deutlich zukunftssicherer, geht aber nicht für alle Anwendungsfälle.

ioster 22. Jun 2021 07:17

AW: Indy OpenSSL Sicherheitsupdates
 
Moin,

ich muss nochmal stören. Die DLLs aus dem 1.0.2u-Paket haben schon ein wenig gefruchtet. Allerdings bekomme ich nun die Meldung, dass ich meine Anfrage mit der falschen Protokollversion sende.

Die Meldung lautet:

Fehler beim Verbinden mit SSL.
error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert
protocol version.

Laut Dienstanbieter sollen die Anfragen mit TLS 1.2 erfolgen sollen. Hat jemand sich damit schon auseinandergesetzt?

Danke
Ingo

mezen 22. Jun 2021 08:40

AW: Indy OpenSSL Sicherheitsupdates
 
TIdHTTP erstellt sich einen eigenen TIdSSLIOHandlerSocketOpenSSL, sofern man nicht selber einen IOHandler zuweist. Dieser selbsterstellte hat aber nur die Default Eigenschaften was TLS 1.0 entspricht.
Erzeuge einen eigenen TIdSSLIOHandlerSocketOpenSSL und setze dort SSLOptions.SSLVersions := [sslvTLSv1_2] (SSLOptions.Method ist deprecated und Überbleibsel aus Indy 9)

ioster 22. Jun 2021 09:08

AW: Indy OpenSSL Sicherheitsupdates
 
Zitat:

Zitat von mezen (Beitrag 1491361)
TIdHTTP erstellt sich einen eigenen TIdSSLIOHandlerSocketOpenSSL, sofern man nicht selber einen IOHandler zuweist. Dieser selbsterstellte hat aber nur die Default Eigenschaften was TLS 1.0 entspricht.
Erzeuge einen eigenen TIdSSLIOHandlerSocketOpenSSL und setze dort SSLOptions.SSLVersions := [sslvTLSv1_2] (SSLOptions.Method ist deprecated und Überbleibsel aus Indy 9)

Hallo mezen,

vielen Dank. Das hat mir weitergeholfen. Parallel dazu habe ich in einem anderen Forum eine Quellcode gefunden, der die Erstellung eines IOHandlers beschreibt.

Die Abfrage funktioniert jetzt bestens, aber wie soll es auch anders sein - es baut sich das nächste Hindernis auf, das Parsen des XML-Rückgabewerts. Es ist faszinierend, wie man sich in dem Thread "XML parsen, aber wie" über das Für und Wider eines XML-Parsers streitet, doch letztlich hat man auf der 3. Seite wieder einen Cliffhanger.

Viele Grüße
Ingo

Codehunter 22. Jun 2021 09:36

AW: Indy OpenSSL Sicherheitsupdates
 
@mezen: So wie ich die Kommentare bei Github verstanden habe ist das aktuell größte Problem, dass es Remy den Rechner zerledert hat. Deshalb stagniert da alles. Das offenbart wieder einmal das Problem kleiner Open-Source-Projekte: Es gibt nur wenige (einen?) Maintainer. Fällt da jemand aus, kann alles über die Wupper gehen. Mir sind die Indy-Eingeweide allerdings zu kompliziert, als dass ich mich da einbringen könnte. Mir hats schon gereicht damals den Byteshift-Bug zu finden :pale:

@ioster: Nein, du willst dir nicht THttpClient als Alternative anschauen :-D Ich habs versucht, wirklich viel Zeit in eine Portierung weg von Indy gesteckt und am Ende nur Ärger gehabt. Womit? TLS natürlich! Warum? Microsoft hatte mal wieder buggy Updates rausgegeben, die defekte Stromchiffren enthielten. Und schon glühte bei uns die Hotline weil die Kunden nicht mehr auf ihre Cloudserver kamen. Dann doch lieber Indy mit veraltetem aber funktionierendem OpenSSL.

Bei den XML-Parsern ist das ganz einfach: Es gibt so viele verschiedene, weil sie alle unterschiedliche Anforderungen erfüllen. Es gibt "fette" Parser mit unheimlichen vielen Features, die aber langsam sind. Und es gibt "schlanke" schnelle Parser, wo man aber viel Aufwand hat, Daten auszulesen. Kommt also darauf an, wie groß deine XML-Dokumente sind. Bei kleiner 1 MB kannst du nehmen was du willst. Darüber sollte man ausgiebig testen welcher Parser geeignet ist. Denn da gibts kein Patentrezept.

ioster 22. Jun 2021 09:49

AW: Indy OpenSSL Sicherheitsupdates
 
Zitat:

Zitat von Codehunter (Beitrag 1491367)
@mezen: So wie ich die Kommentare bei Github verstanden habe ist das aktuell größte Problem, dass es Remy den Rechner zerledert hat. Deshalb stagniert da alles. Das offenbart wieder einmal das Problem kleiner Open-Source-Projekte: Es gibt nur wenige (einen?) Maintainer. Fällt da jemand aus, kann alles über die Wupper gehen. Mir sind die Indy-Eingeweide allerdings zu kompliziert, als dass ich mich da einbringen könnte. Mir hats schon gereicht damals den Byteshift-Bug zu finden :pale:

@ioster: Nein, du willst dir nicht THttpClient als Alternative anschauen :-D Ich habs versucht, wirklich viel Zeit in eine Portierung weg von Indy gesteckt und am Ende nur Ärger gehabt. Womit? TLS natürlich! Warum? Microsoft hatte mal wieder buggy Updates rausgegeben, die defekte Stromchiffren enthielten. Und schon glühte bei uns die Hotline weil die Kunden nicht mehr auf ihre Cloudserver kamen. Dann doch lieber Indy mit veraltetem aber funktionierendem OpenSSL.

Bei den XML-Parsern ist das ganz einfach: Es gibt so viele verschiedene, weil sie alle unterschiedliche Anforderungen erfüllen. Es gibt "fette" Parser mit unheimlichen vielen Features, die aber langsam sind. Und es gibt "schlanke" schnelle Parser, wo man aber viel Aufwand hat, Daten auszulesen. Kommt also darauf an, wie groß deine XML-Dokumente sind. Bei kleiner 1 MB kannst du nehmen was du willst. Darüber sollte man ausgiebig testen welcher Parser geeignet ist. Denn da gibts kein Patentrezept.

Moin Codehunter,

ich möchte eigentlich so gut und schnell wie möglich zum Ziel kommen und stoße selbst mit zusätzlich erworbenen VCL-Komponenten leider immer wieder an (meine?) Grenzen, weil die Dokumentationen dürftig sind und Support nur bedingt geleistet wird. Es gibt solche und solche Anbieter. Ich möchte mich auf die Entwicklung einer Anwendung konzentrieren können und mich nicht unbedingt in tiefschürfende Dokumente über XML oder Ähnliches einlesen müssen.

Indy ist im Augenblick für HTTP erste Wahl, weil es zum Delphi-Paket gehört und weit verbreitet ist. Für den Mailversand habe ich mir schon EasyMAPI gegönnt, da die Komponenten eher die Kundenanforderungen erfüllten.

Jetzt steht für mich eben XML parsen auf der ToDo-Liste, wobei ich genau dieselbe Quelle des Bundeszentralamtes für Steuern anzapfen möchte, die im benannten Thread untersucht wird. Hier vielleicht offTopic, aber über mit welcher Methode komme ich an einen bestimmten Parameter in einem solchen XML-Dokument? Ich möchte eben nicht über String-Funktionen wie Pos oder PosEx nach den Schlüsselbegriffen suchen müssen, wenn ich schon ein XMLDocument vor mir habe.

Viele Grüße
Ingo

Codehunter 22. Jun 2021 09:56

AW: Indy OpenSSL Sicherheitsupdates
 
Zitat:

Zitat von ioster (Beitrag 1491368)
Jetzt steht für mich eben XML parsen auf der ToDo-Liste, wobei ich genau dieselbe Quelle des Bundeszentralamtes für Steuern anzapfen möchte, die im benannten Thread untersucht wird. Hier vielleicht offTopic, aber über mit welcher Methode komme ich an einen bestimmten Parameter in einem solchen XML-Dokument? Ich möchte eben nicht über String-Funktionen wie Pos oder PosEx nach den Schlüsselbegriffen suchen müssen, wenn ich schon ein XMLDocument vor mir habe.

Dafür solltest du einen extra Thread aufmachen. Oder dir ggf. mal vom Gockel bzw. der DP-Suche was über IXMLDocument und XPath erzählen lassen. Für einfache XML-Dokumente ist das der schnellste Weg. Ich habe mir vor einiger Zeit einen Klassenaufsatz für TXmlDocument geschrieben, mit dem ich per XPath auch Attribute und Namespaces verarbeiten kann. Aber das würde hier zu weit führen.

zeras 22. Jun 2021 17:29

AW: Indy OpenSSL Sicherheitsupdates
 
Zitat:

Zitat von ioster (Beitrag 1491368)
Jetzt steht für mich eben XML parsen auf der ToDo-Liste, wobei ich genau dieselbe Quelle des Bundeszentralamtes für Steuern anzapfen möchte, die im benannten Thread untersucht wird. Hier vielleicht offTopic, aber über mit welcher Methode komme ich an einen bestimmten Parameter in einem solchen XML-Dokument? Ich möchte eben nicht über String-Funktionen wie Pos oder PosEx nach den Schlüsselbegriffen suchen müssen, wenn ich schon ein XMLDocument vor mir habe.

Viele Grüße
Ingo

Hast du schon versucht, dir über Delphi eine Klasse zusammenbauen zu lassen? Du musst nur eine gültige XML Datei haben und da baut dir Delphi das Gerüst rundherum.
Aber vielleicht kennst du das ja alles schon.
Ich habe das für verschiedene Projekte schon genutzt.

TiGü 23. Jun 2021 08:32

AW: Indy OpenSSL Sicherheitsupdates
 
Zitat:

Zitat von zeras (Beitrag 1491399)
Hast du schon versucht, dir über Delphi eine Klasse zusammenbauen zu lassen? Du musst nur eine gültige XML Datei haben und da baut dir Delphi das Gerüst rundherum.
Aber vielleicht kennst du das ja alles schon.
Ich habe das für verschiedene Projekte schon genutzt.

Die Möglichkeit ist erst seit gestern bekannt:
https://www.delphipraxis.net/192207-...ber-wie-4.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.
Seite 10 von 11   « Erste     8910 11      

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