Statische OpenSSL-koppeling in sgcWebSockets: geen libcrypto- en libssl-DLL's meer | eSeGeCe Blog

Statische OpenSSL-koppeling in sgcWebSockets: geen libcrypto- en libssl-DLL's meer

· Componenten

TLS gebruiken met sgcWebSockets op Windows betekende tot nu toe altijd dat u libcrypto en libssl naast uw uitvoerbare bestand moest meeleveren, afgestemd op de juiste OpenSSL-versie en bitness. sgcWebSockets kan OpenSSL nu in plaats daarvan rechtstreeks in het uitvoerbare bestand koppelen, zodat er geen DLL meer hoeft te worden meegeleverd, geen versie meer hoeft te worden afgestemd en geen map meer nodig is om ze in te bewaren. Deze functie is beschikbaar in de Enterprise- en All-Access-edities.

Eén unit, verder niets te configureren

Er zijn geen compilerdirectieven om in te schakelen en geen OpenSSL API-versie om te kiezen. Voeg de unit sgcIdSSLOpenSSL_Static toe aan de uses-clause van uw project, en vanaf de volgende run gebruikt uw toepassing de OpenSSL-bibliotheek die in de .exe is gekoppeld, zowel voor client- als voor servercomponenten.

uses
  sgcWebSocket, sgcWebSocket_Classes,
  sgcIdSSLOpenSSL_Static;

Verwijder de unit uit de uses-clause en uw toepassing gaat weer terug naar het laden van de OpenSSL-DLL's, precies zoals voorheen. Er hoeft verder niets in uw code te veranderen; uw TLS-instellingen, certificaten en verbindingslogica blijven in beide gevallen hetzelfde.

Werkt in clients en servers, Win32 en Win64

Statische koppeling geldt evengoed voor TsgcWebSocketClient als voor TsgcWebSocketServer, en voor elke andere sgcWebSockets- of sgcIndy-component die via TLS verloopt, zowel in 32-bit als 64-bit builds. Een server die TLS voor honderden verbindingen afhandelt en een client die naar één enkel eindpunt verbinding maakt, gebruiken beide op dezelfde manier de gekoppelde OpenSSL, gewoon doordat de unit in het project aanwezig is.

OpenSSL 3.5.7, up-to-date gehouden

De momenteel gekoppelde OpenSSL-versie is 3.5.7. Naarmate nieuwe OpenSSL-releases verschijnen, wordt dit in toekomstige sgcWebSockets-updates vernieuwd, zodat u zelf geen OpenSSL-binaries hoeft bij te houden, te downloaden of opnieuw te implementeren; een gewone update van de component volstaat.

Vereisten

Als u compileert met een Delphi-versie ouder dan XE2 en toch naar de unit verwijst in de verwachting dat deze wordt gekoppeld, krijgt u E2045 Bad object file format te zien. De oplossing is simpelweg sgcIdSSLOpenSSL_Static uit de uses-clause te verwijderen; uw toepassing blijft dan werken met de OpenSSL-DLL's.

Wanneer dit nuttig is

Statische koppeling is nuttig wanneer u een enkel bestand wilt uitleveren, wanneer u niet kunt garanderen dat op de doelmachine al de juiste OpenSSL-DLL is geïnstalleerd, of wanneer uw implementatieproces geen extra bestanden naast het uitvoerbare bestand toestaat, bijvoorbeeld een afgeschermde installatiemap of een tool die als één binair bestand wordt gedistribueerd.

Beschikbaarheid

Statische OpenSSL-koppeling wordt geleverd in de Enterprise- en All-Access-edities van sgcWebSockets. Voor het volledige overzicht van de TLS-backends die sgcWebSockets op elk platform ondersteunt, zie de SSL/TLS-sectie en de pagina OpenSSL TLS-backend.

Download het van de sgcWebSockets downloadpagina, of haal het op via GetIt of uw geregistreerde account.

Vragen, feedback of hulp nodig bij het plannen van een DLL-vrije implementatie? Neem contact op, u krijgt antwoord van de mensen die de code hebben geschreven.