[Gelöst]SSL Support für Linux

Alle Fragen zur Netzwerkkommunikation
Antworten
Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

[Gelöst]SSL Support für Linux

Beitrag von Nimral »

Ich habe ein funktionierendes Programm für Windows, welches SSL unterstützt. Gut. Jetzt wollte ich es auch für Linux (eine halbwegs aktuelle VM mit Debian Buster lag grad rum ...) compilieren. Es compiliert, aber der SSL Support springt nicht an.

Ich verwende diesen Code, um mal prinzipiell die Verfügbarkeit von SSL zu testen:

Code: Alles auswählen

function TMainForm.SSLVersionInfo: String;

var
  TestSocket:TTCPBlockSocket;

begin
   TestSocket := TTCPBlockSocket.Create;
   Try
     result := Format('SSL Support: %s (%s)',[TestSocket.SSL.LibVersion,TestSocket.SSL.LibName]);
   finally
     FreeAndNil(TestSocket);
   end;
end; 
Auf Windows klappt das, sobald ich die richtigen openSSL Bibliotheken libeay32.dll und ssleay32.dll bereitstelle. Auf Linux kann ich erst mal nur sagen, dass der Befehl "openSSL version" eine sinnvolle Ausgabe einer openSSL Versionsnummer macht, OpenSSL ist also irgendwo vorhanden. Mein Test wirft dennoch "Without SSL support (ssl_none)" aus, das ist die selbe Meldung wie wenn ich auf Windows die dlls nicht bereitstelle.

Versuche ich dennoch, eine SSL Connection entgegen zu nehmen, läuft ConnectionSocket.SSLAcceptConnection auf eine Exception -1 "SSL/TLS support is not compiled!". Nach meiner Windows Erfahrung ist die Meldung ziemlich irreführend, mit "compiled" hat sie nichts zu tun, sie weist darauf hin dass SSL aus irgendeinem Grund nicht anspringt, z.B. wenn ich eine SSL Verbindung verlange, obwohl mein Test bereits ergeben hat, dass die dlls nicht vorhanden sind.

Verwendete Packages: laz_openssl und laz_synapse.

Wer kann mir verraten, wie ich SSL unter Linux ans Laufen bekomme?

Thnx, Armin.
Zuletzt geändert von Nimral am Fr 7. Jan 2022, 12:34, insgesamt 1-mal geändert.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: SSL Support für Linux

Beitrag von Winni »

Hi!

Also "Debian" und "aktuell" in einem Satz zu verwenden, ist ein Widerspruch:

Debian humpelt immer überall ein paar Versionsnummern hinterher. Aus Sicherheitsgründen - sagen sie.

Hast Du libcrypto installiert?

Code: Alles auswählen

sudo apt-get install libssl-dev
Winni

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: SSL Support für Linux

Beitrag von Nimral »

Hi Winni,

nein, hab ich nicht, OpenSSL scheint ja installiert zu sein - dachte ich jedenfalls, weil "OpenSSL version" eine sinnvolle Ausgabe erzeugt. Aber ich probiers gleich mal auf Verdacht.

Debian, RedHat, Ubuntu, mir ist es absolut schnuppe, welche Linux Version. An Debian/Buster bin ich indirekt über den Raspi geraten, da ist es wohl die technische Basis für Raspbian.

Welches Linux verwendest Du?

Armin.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: SSL Support für Linux

Beitrag von theo »

Unter OpenSUSE muss ich (afair) auch immer libopenssl-devel installieren, damit es klappt mit Lazarus.
Wahrscheinlich geht es am Ende nur um den Symlink:
/usr/lib64/libssl.so > /usr/lib64/libssl.so.1.1

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: SSL Support für Linux

Beitrag von Nimral »

Der Tipp mit libopenssl-devel hat mich eine Fehlermeldung weiter gebracht :-)

Unable to start SSL session: 336236740 (error:140A90C4:SSL routines:func(169):reason(196))

Nach einiger Sucherei hat sich herausgestellt, dass ich mir auf dem Entwicklungs-System *irgendwie* eine alte Synapse Version eingetreten habe. Ersetzt durch die aus dem OPM --> jetzt klappt SSL --> vielen Dank wieder mal für die richtigen Hinweise :-).

Ich hatte schon unter Windows so meine Probleme, die "richtigen" Bibliotheken in den Zugriff zu bekommen. Ich arbeite an einer Software die von Fast-Laien installiert werden können soll. Wenn immer etwas schief geht, werden sie sofort den Schraubenzieher fallen lassen und um Hilfe rufen, und erwarten, dass *es irgendwie auf ihrem* System läuft. Ich muss also irgendwie das nachrüsten, was irgendwie immer unter den Tisch zu fallen scheint: mein Programm *muss* loggen, welche Bibliotheken es wo findet oder auch nicht, denn wenn es Probleme gibt ist das Äußerste, was ich von den Usern verlangen kann, dass sie mir mein eigenes Log schicken.

Und wenn bereits was auf dem Zielsystem vorhanden ist, *muss* mein Programm in der Lage sein, das zu finden und zu verwenden. An einem simplen felhlenden Symlink darf es nicht scheitern, denn offensichtlich scheitert der Rest des Systems auch nicht daran.

Wenns denn nur der Symlink wäre ... kann man der SSL Library innerhalb von Lazarus eigentlich den Bibliothekspfad direkt verfüttern?

Armin.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: SSL Support für Linux

Beitrag von Winni »

Nimral hat geschrieben:
Fr 7. Jan 2022, 12:28

Wenns denn nur der Symlink wäre ... kann man der SSL Library innerhalb von Lazarus eigentlich den Bibliothekspfad direkt verfüttern?

Armin.

Hi!

Gewöhne Dich mal an den Gedanken, dass unter Linux die Libraries vom System verwaltet werden. Jegliches Rumgepfusche führt meistens zur Verschlimmbesserung und ist nach dem nächsten Versions-Update wahrscheinlich sowieso im Nirvana.

Winni

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: [Gelöst]SSL Support für Linux

Beitrag von theo »

Man sollte vllt. noch erwähnen, dass es im Synapse trunk jetzt auch ssl_openssl11.pas und ssl_openssl11_lib.pas gibt.
https://sourceforge.net/p/synalist/code ... nssl11.pas
https://sourceforge.net/p/synalist/code ... 11_lib.pas

Die habe ich zumindest auf meiner OPM Installation noch nicht dabei.
Vielleicht ändert das die Sache.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: SSL Support für Linux

Beitrag von PascalDragon »

Nimral hat geschrieben:
Fr 7. Jan 2022, 12:28
Und wenn bereits was auf dem Zielsystem vorhanden ist, *muss* mein Programm in der Lage sein, das zu finden und zu verwenden. An einem simplen felhlenden Symlink darf es nicht scheitern, denn offensichtlich scheitert der Rest des Systems auch nicht daran.
Das liegt daran, dass diese anderen Anwendungen statisch zur Bibliothek linken (heißt zur Zeit des Kompilierens). Die OpenSSL Unit von Free Pascal link aber dynamisch, das heißt die Bibilothek wird erst zur Laufzeit gefunden (mittels LoadLibrary letztlich). Da die Unit verschiedene Versionen von OpenSSL unterstützt ist es nicht sinnig 'ne Tonne an Bibliotheksnamen mitzuführen, die sich noch dazu von OS zu OS unterscheiden. Deswegen wird hier einfach nur der Name genutzt, der auch zur Kompilierzeit vorhanden ist, und das ist eben der Symlink der auf Debian und Derivaten durch die *-dev-Pakete angelegt wird.
Nimral hat geschrieben:
Fr 7. Jan 2022, 12:28
Wenns denn nur der Symlink wäre ... kann man der SSL Library innerhalb von Lazarus eigentlich den Bibliothekspfad direkt verfüttern?
Keine Ahnung ob das bei den SSL Units von Synapse möglich ist, bei der FPC Unit OpenSSL, die zum Beispiel von fpHttpClient genutzt wird, geht das über InitSSLInterface.
FPC Compiler Entwickler

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: [Gelöst]SSL Support für Linux

Beitrag von Nimral »

Winni hat geschrieben:
Fr 7. Jan 2022, 13:25
Gewöhne Dich mal an den Gedanken, dass unter Linux die Libraries vom System verwaltet werden. Jegliches Rumgepfusche führt meistens zur Verschlimmbesserung und ist nach dem nächsten Versions-Update wahrscheinlich sowieso im Nirvana.
Ich bin auch nicht scharf drauf.

Hintergrund: mein Programm läuft im medizinischen Sektor im Backend und muss abgenommen werden. Ich muss also jede verwendete Library und jede nachzuinstallierende Komponente penibel auflisten und begründen. Den Rohclient liefert fast immer der Kunde, was also beim OS dabei ist, brauch ich nicht drüber diskutieren. Wie genau der Client aussieht und welches Linux ich vor mir haben werde erfahre ich bestenfalls ein paar Tage vorher. Sofern libssl-dev tatsächlich nur einen Symlink erzeugt, sehe ich kein Problem, außer natürlich dass ich beim Programmstart die Existenz des Symlink prüfen und eine Meldung anzeigen muss, wenn er nicht exitsiert, damit der Schnarcher, der das Programm in Betrieb nimmt und der das Kapitel mit den "Prerequisites" wie immer überlesen hat, eine sprechende Meldung bekommt, dass er noch libssl-dev nachinstallieren muss.

Nur: sofern libssl-dev außer den Symlink zu erzeugen auch noch einen Sack Tools mitbringt, bekomme ich *möglicherweise* ein Problem, je nachdem mit welchem Typ von Sicherheitsbeauftragten ich es zu tun bekomme. Ja, ich finds oft auch doof, aber ich sehs wie beim TÜV: diskutieren ist fast immer zwecklos. Wenn ich diesen Fall also bereits im Vorfeld abbacken kann mach ich das.

Für den Moment steht dieses Thema aber nicht ganz oben auf meiner Agenda, SSL läuft ja, aber im Februar spätestens März wenn die ersten Kundeninstallationen anstehen wird es dort stehen. Da mein Programm stand heute aber out of the Box nicht ohne Weiteres funktioniert, muss ich früher oder später wohl oder übel was machen. Einen Hinweis in die Installationsdoku schreiben ist nur meine allerletzte Option.

PascalDragon hat mir schon einen wertvollen Hinweis gegeben.

Armin.
Zuletzt geändert von Nimral am Fr 7. Jan 2022, 19:33, insgesamt 2-mal geändert.

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: [Gelöst]SSL Support für Linux

Beitrag von Nimral »

theo hat geschrieben:
Fr 7. Jan 2022, 14:16
Man sollte vllt. noch erwähnen, dass es im Synapse trunk jetzt auch ssl_openssl11.pas und ssl_openssl11_lib.pas gibt.
https://sourceforge.net/p/synalist/code ... nssl11.pas
https://sourceforge.net/p/synalist/code ... 11_lib.pas

Die habe ich zumindest auf meiner OPM Installation noch nicht dabei.
Vielleicht ändert das die Sache.
Guter Tipp, danke! Mein OPM installiert auch eine ältere Version.

Führt Lukas irgendwo eine Liste, was er geändert hat?

Schneller Blick in den Code hat schon mal OS/2 Support ergeben. Wow. Ich glaub, irgendwo im Keller steht noch ein PS/2 Model 80 rum, kann ich vielleicht zum 1. April als unsere Plattform der Zukunft präsentieren :-)

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: [Gelöst]SSL Support für Linux

Beitrag von theo »

Nimral hat geschrieben:
Fr 7. Jan 2022, 18:04
Führt Lukas irgendwo eine Liste, was er geändert hat?
Auf SF kann man jew. auf "History" klicken:
https://sourceforge.net/p/synalist/code ... nssl11.pas
https://sourceforge.net/p/synalist/code ... 11_lib.pas

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: [Gelöst]SSL Support für Linux

Beitrag von PascalDragon »

Nimral hat geschrieben:
Fr 7. Jan 2022, 18:04
Schneller Blick in den Code hat schon mal OS/2 Support ergeben. Wow. Ich glaub, irgendwo im Keller steht noch ein PS/2 Model 80 rum, kann ich vielleicht zum 1. April als unsere Plattform der Zukunft präsentieren :-)
Free Pascal unterstützt eben auch viele alte Systeme, da ist es kein Wunder, dass manche Bibliotheken da dann auch Unterstützung anbieten.

MS-DOS und Windows 3.11 als Beispiel für den Intel 8086 und Atari ST und Amiga 500 als Beispiel für den Motorola 68000. Der Z80 Prozessor wird zum Beispiel in 3.3.1 auch unterstützt. Es fehlt eigentlich nur noch der 6502, damit so quasi alles relevante abgedeckt werden kann. ;)
FPC Compiler Entwickler

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: [Gelöst]SSL Support für Linux

Beitrag von Nimral »

PascalDragon hat geschrieben:
Sa 8. Jan 2022, 12:19
Free Pascal unterstützt eben auch viele alte Systeme, da ist es kein Wunder, dass manche Bibliotheken da dann auch Unterstützung anbieten.
Soweit ich im Quellcode gesehen habe, ist die OS/2 Unterstützung in dieser Version erst hinzugekommen :-) Ich habs auch eher schmunzelnd zur Kenntnis genommen als mich darüber zu mokieren. OS/2 (oder irgendein Derivat) ist also offenbar noch im Einsatz - Totgesagte leben halt länger :-)

Aufhänger für das neue Release dürfte aber auf den ersten Blick der TLS 1.3 Support sein.

Armin.

Antworten