OpenSSL TLS-backend — sgcWebSockets | eSeGeCe

OpenSSL TLS-backend

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.

← Alle TLS-backends

OpenSSL (iohOpenSSL)

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.

OpenSSL inschakelen

Zet TLSOptions.IOHandler op iohOpenSSL en implementeer vervolgens de OpenSSL-bibliotheken bij je build.

uses
  sgcWebSocket, sgcWebSocket_Types;
// ...
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';   // optional custom CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // optional client cert for mTLS
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";   // optional custom CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // optional client cert for mTLS
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

De OpenSSL-bibliotheken meeleveren

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.

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.

uses
  sgcWebSocket, sgcWebSocket_Classes,
  sgcIdSSLOpenSSL_Static;

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.
Bekijk de All-Access-prijzen

Cross-platform TLS in één regel

Download de gratis proefversie en voeg OpenSSL-gebaseerde TLS toe aan je Delphi- en C++Builder-apps.