OpenSSL (iohOpenSSL) is het cross-platform TLS-transport voor sgcWebSockets. Het draait op elk platform dat de bibliotheek ondersteunt en is de standaard op de meeste ervan, met de breedste protocol- en cipher-dekking van alle backends. Schakel het in door TLSOptions.IOHandler op iohOpenSSL te zetten en implementeer vervolgens de OpenSSL-runtime-bibliotheken samen met je applicatie.
Cross-platform TLS geïmplementeerd over de socket van Indy, beschikbaar op elk platform dat sgcWebSockets ondersteunt.
OpenSSL is de cross-platform TLS-implementatie die sgcWebSockets bovenop de socket van Indy plaatst. Het is beschikbaar op Windows, Linux, macOS, iOS en Android, en is op de meeste ervan de standaardbackend. Kies OpenSSL wanneer je identiek TLS-gedrag op elk platform nodig hebt, of wanneer je afhankelijk bent van een mogelijkheid die alleen OpenSSL biedt.
De backend dekt TLS 1.0 tot en met TLS 1.3 met de breedste cipher-suite-selectie van alle sgcWebSockets-transports. Je kunt een privé- of zelfondertekende autoriteit vertrouwen met een custom CA-root (RootCertFile), een clientcertificaat presenteren voor mutual TLS, en applicatieprotocollen zoals http/1.1 adverteren via ALPN. Omdat alle vier backends dezelfde TLSOptions-API delen, verhuist code geschreven voor OpenSSL naar een native backend door alleen de IOHandler-regel te wijzigen.
De afweging is de implementatie. OpenSSL is een externe afhankelijkheid, dus je verzendt de runtime-bibliotheken met je applicatie en houdt ze gepatcht. Op Windows betekent dat libssl-3.dll en libcrypto-3.dll, op Linux en Android de bijbehorende .so-bestanden, en op Apple-platforms de .dylib-bestanden. Wil je native TLS zonder bibliotheken te implementeren, kijk dan naar SChannel op Windows of de native Android- en Apple-backends, of blijf OpenSSL gebruiken en koppel het statisch in je Windows-uitvoerbare bestand, zie hieronder.
Code
OpenSSL inschakelen
Zet TLSOptions.IOHandler op iohOpenSSL en implementeer vervolgens de OpenSSL-bibliotheken bij je build.
OpenSSL is een externe afhankelijkheid, dus de runtime-bibliotheken reizen op elk platform mee met je applicatie.
Windows
Implementeer libssl-3.dll en libcrypto-3.dll naast je uitvoerbaar bestand (de 32-bits of 64-bits build die bij je target past), of sla de DLL's helemaal over door OpenSSL statisch te koppelen, zie hieronder.
Linux & Android
Bundel de bijbehorende libssl- en libcrypto-.so-bestanden en laad ze vervolgens vanaf een pad dat je applicatie tijdens runtime kan bereiken.
macOS, iOS
Verzend de libssl- en libcrypto-.dylib-bestanden met de app-bundel zodat de OpenSSL-runtime beschikbaar is op het apparaat.
Houd ze gepatcht
Omdat de bibliotheken door jou worden geïmplementeerd, ben je verantwoordelijk voor het bijwerken ervan zodra een beveiligingsfix wordt uitgebracht.
Windows · Enterprise, All-Access
OpenSSL koppelen in het uitvoerbare bestand
Op Windows kan OpenSSL rechtstreeks in je .exe worden gekoppeld in plaats van tijdens runtime te worden geladen vanuit libssl-3.dll en libcrypto-3.dll.
Voeg de unit sgcIdSSLOpenSSL_Static toe aan de uses-clause van je project en er is verder niets te configureren: geen compilerdirectief om in te schakelen, geen OpenSSL API-versie om te kiezen. Je applicatie gebruikt vanaf de volgende run de OpenSSL-bibliotheek die in het uitvoerbare bestand is gekoppeld, zowel voor client- als servercomponenten, in 32-bit- en 64-bit-builds. Verwijder de unit uit de uses-clause en je applicatie gaat weer terug naar het laden van de OpenSSL-DLL's, precies zoals voorheen.
De momenteel gekoppelde OpenSSL-versie is 3.5.7, die in toekomstige updates wordt vernieuwd zodat je zelf geen OpenSSL-binaries hoeft bij te houden of opnieuw te implementeren. Statische koppeling vereist Delphi XE2 of nieuwer en de aangepaste Indy-bibliotheek (de standaard in deze edities); op oudere Delphi-versies compileert de unit tot niets en blijft je applicatie de OpenSSL-DLL's laden zoals gebruikelijk.
Editie-opmerking
OpenSSL (iohOpenSSL) is inbegrepen in elke editie van sgcWebSockets. Zie de feature matrix voor de volledige uitsplitsing.
Statische koppeling op Windows vereist Delphi XE2 of nieuwer en is beschikbaar in de edities Enterprise en All-Access.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.