![]() |
Problem mit OpenSSL: liefert Connection Error
Hallo,
ich benutze für ein Programmsystem Delphi5 mit Indy9. Ich weiß, etwas ältlich, aber es funktioniert eigentlich. Mit dem Programm verbinde ich mich mit dem Internet, d.h. per HTTP.GET und OpenSSL verbinde ich mich zu einem Server. Nun gibt es zwei Server - einen für Produktion und einen für Test - die gleich aufgesetzt sind bzw. sein sollen. Auf beiden Servern sind die SSL-Zertifikate installiert. Wenn ich die Verbindung zum produktiven Server aufbaue, dann klappt das mit den entsprechenden Credentials mit dem Download von Daten einwandfrei. Bei dem Versuch, die gleiche Aktion mit den gleichen Credentials zum Testsystem auszuführen, bekomme ich immer einen SSL Connection Error geliefert. Der Code in beiden Fällen ist bei mir immer identisch, die Credentials ebenfalls. Mit den Credentials kann ich mich "manuell" bei dem Server anmelden, d.h. der Server läuft und ich bin als User dort bekannt. Ich habe keine Idee mehr, woran das liegen könnte. Im Debug-Mode durch die Indy-Resourcen komme ich leider auch nicht weiter. Es wäre prima, wenn jemand eine Idee hätte, wo der Fehler liegt. Danke. |
AW: Problem mit OpenSSL: liefert Connection Error
Möglicherweise liefert der eine Server noch ältere bzw. andere Verschlüsselung und Stromchriffren. Indy 9 kann glaube ich gar nicht mit dem aktuellen OpenSSL und TLS 1.2 umgehen. Bin mir aber nicht sicher, weil schon vor ca. 10 Jahren auf Indy 10 umgestiegen. Am besten schaust du dir den Verbindungsaufbau mal mit Wireshark an. Da kannst du am schnellsten feststellen wo es klemmt. Teilweise wirft Wireshark Verbindungsfehler sogar als rote Einträge aus.
Für Indy 10 habe ich mir mal eine Prozedur geschrieben, welche die Secrets in eine Datei ausleitet, sodass man den verschlüsselten Datenstrom mit Wireshark entschlüsseln kann. Vielleicht lässt sich das auch für Indy 9 adaptieren. Allerdings wird dein Problem schon auftreten bevor überhaupt eine Verschlüsselung ausgehandelt wurde. ![]() |
AW: Problem mit OpenSSL: liefert Connection Error
Wenn das Programm überschaubar ist (nur HTTP GET), wäre eine Umstellung auf Indy 10 erwägenswert (Indy 10 läuft auch mit Delphi 5).
|
AW: Problem mit OpenSSL: liefert Connection Error
Zumal die Entwickler intern wohl schon an Indy 11 arbeiten... In den allermeisten Fällen ist Indy 9 schnell gegen Indy 10 ausgetauscht, weil die Komponenten und deren Members entweder gleich oder zumindest sehr ähnlich sind. Ein Fallstrick könnte Unicode werden, das war bei D5 noch nicht so vorgesehen wie es heute ist.
Zumindest wenn es um die weitere Entwicklung in puncto TLS/SSL geht, stößt man absehbar mit Indy 9 an Grenzen. Denn TLS 1.3 wird kommen, OpenSSL 1.2 wird kommen und beides wird es für Indy 9 nicht geben. Daher wäre eine Migration auf Indy 10 keine schlechte Investition in die Zukunft. Dabei am besten gleich noch eine Abstraktion dazwischen bauen, dann ist der Wechsel von Indy 10 auf Indy 11 dann weniger aufwendig und wird nicht mehr so lang aufgeschoben ;-) |
AW: Problem mit OpenSSL: liefert Connection Error
Vielen Dank für die Tipps.
Wireshark hatte ich mir schon herunter geladen, um damit die Sache demnächst anzugehen. Mal sehen, wie einfach/kompliziert das ist. Ich weiß, dass Indy 9 nur bis TLSv1 unterstützt. Deswegen habe ich eine Änderung auf Indy 10 schon in Erwägung gezogen. Nur kann ich nicht abschätzen, wieviel Arbeit die Umprogrammierung bedeutet. Ist eine Änderung auf Unicode notwendig? Ich hatte mir schon vor einiger Zeit Embarcadero RAD Studio XE7 zugelegt und wollte das Ganze migrieren. Nur dann gilt in jedem Fall Unicode für die Stringverarbeitung. Da mein Programm sehr viel mit Strings hantiert, habe ich die Konvertierung bislang gescheut - auch aus Zeitgründen. |
AW: Problem mit OpenSSL: liefert Connection Error
Zitat:
|
AW: Problem mit OpenSSL: liefert Connection Error
Danke für den Hinweis. Das ist doch schon mal eine gute Nachricht.
|
AW: Problem mit OpenSSL: liefert Connection Error
Wegen Unicode würde ich mir jetzt erstmal nicht so große Gedanken machen. In vielen Fällen hat man auch bei D2009 ältere Projekte ohne Änderungen weiterführen können. Knifflig wurde es meistens wenn man mit PChars gearbeitet hat und Win32-Funktionen nutzt. Da wurden vor D2009 die Ansi-Varianten genutzt und danach die Widechar-Varianten.
Lade dir einfach mal die Community Edition runter und teste dein Projekt damit. Indy 10 ist da von Haus aus schon installiert. Jetzt noch auf ein XE7 migrieren macht wenig Sinn, dann lieber ein Upgrade auf die Subscription in Erwägung ziehen. |
AW: Problem mit OpenSSL: liefert Connection Error
Okay, habe ich verstanden. Es liegt trotzdem etwas Arbeit vor mir. Danke für die Hilfe.
|
AW: Problem mit OpenSSL: liefert Connection Error
Du brauchst auf jeden Fall eine
![]() Es ist schon so lange her. Ich hatte mal Troubles (Version die bei D7 mitkam) bspw. mit einem Array das zu klein dimensioniert war. Zitat:
|
AW: Problem mit OpenSSL: liefert Connection Error
Hallo,
Zitat:
Die läßt du sowohl mit dem alten Delphi als auch mit dem neuen Delphi laufen. |
AW: Problem mit OpenSSL: liefert Connection Error
Was soll "gepatchte Version" heißen? Ich benutze Indy 9.0.17 schon eine geraume Weile und habe bislang keine Probleme gehabt. Im Moment besteht halt das Problem, dass ich mit dem gleichen Code an beide Server gehe (http), bei dem einen funktionieren alle Requests, bei dem anderen nicht. Ich arbeite daran.
|
AW: Problem mit OpenSSL: liefert Connection Error
Gepatchte Version heißt: Eine ältere Version, die eigentlich nicht mehr unterstützt wird, wurde dahingehend ergänzt, dass sie auch mit aktuellem OpenSSL zurechtkommen.
Ohne diese Version wirst Du eventuell nicht zu einem Ergebnis kommen, da heutige Server Funktionalitäten nutzen, die es zu Zeiten von Indy 9 noch nicht gab und daher in der von Dir genutzten Version von Indy 9 auch nicht vorhanden sind? Sprich: Ohne Nutzung des Patches oder einen Versionswechsel der Indys wirst Du (wenn Du Pech hast - und danach sieht es irgendwie aus) nicht weiterkommen. |
AW: Problem mit OpenSSL: liefert Connection Error
Gemeint war der letzte Stand von Indy 9. Das passt schon.
Was sagt denn Open SSL wenn du mit dem ![]() Ansonsten wäre die Fehlermeldung interessant. Zitat:
|
AW: Problem mit OpenSSL: liefert Connection Error
Wenn ich mit Openssl s_client auf die Server gehe, dann gibt es keinen Unterschied bei den jeweiligen Rückmeldungen. Hmm?
Ich habe jetzt auch über Wireshark den Netzwerk-Traffic angeschaut. Bei dem produktiven Server läuft es durch mit den ganzen SSL Frames. Beim Testserver gibt es nur einen Frame für SSL mit "Client Hello" und es kommt nur eine TCP Antwort vom Server, die mir nichts sagt. |
AW: Problem mit OpenSSL: liefert Connection Error
Ich denke, dass ich den "Fehler" gefunden habe.
Über OpenSSL s_client hatte ich nur -connect incl Port eingegeben. Bei den beiden Zugriffen auf die Server konnte ich sehen, dass unterschiedliche Zertifikate angezogen wurden. Wenn ich den Parameter -servername zusätzlich angebe, dann wird in beiden Fällen das gleiche(!) Zertifikat ausgegeben. Leider unterstützt Indy 9 nicht die Angabe eines Servernamem(kein SNI Support). Ich habe in den Quellen von Indy 9 auch nichts in der Richtung entdecken können. Inwieweit das in Indy 10 implementiert ist, habe ich nicht final herausfinden können (Internet). Ich werde mal einen Versuch mit der Community Edition starten - wenn ich die Zeit dazu finde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz