SSL / TLS-backends

sgcWebSockets levert vijf uitwisselbare TLS-transports achter één enkele eigenschap, TLSOptions.IOHandler. Kies OpenSSL voor maximale portabiliteit, een native platform-backend (Windows SChannel, Android, iOS/macOS) die de eigen TLS-stack van het besturingssysteem gebruikt zonder OpenSSL-bibliotheken te implementeren, of de Native TLS-engine, een TLS 1.3- en TLS 1.2-stack geschreven in Object Pascal die op geen enkel doelplatform een afhankelijkheid meebrengt en standaard post-quantum X25519MLKEM768-sleuteluitwisseling onderhandelt. Op Windows kan OpenSSL zelf ook statisch worden gekoppeld in je uitvoerbare bestand, zodat je bij OpenSSL kunt blijven zonder ook maar iets te hoeven implementeren. Van backend wisselen is één regel code, verder verandert er niets.

Vijf TLS-transports, één eigenschap

Elke backend sluit aan op dezelfde TLSOptions-API. Kies degene die bij je platform en implementatie past en stel vervolgens TLSOptions.IOHandler in.

Backend-vergelijking

Platforms, implementatie-footprint, TLS 1.3-ondersteuning en editie voor elk transport.

Backend Platforms Te implementeren bibliotheek TLS 1.3 Editie
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, of geen op Windows (statische koppeling) Ja Alle edities
SChannel Windows Geen (ingebouwd in Windows) Ja (Windows 11/Server 2022+) Professional, Enterprise
Android-TLS Android Geen (gebruikt het OS) Ja Enterprise
Apple-TLS iOS, macOS Geen (gebruikt het OS) Ja (10.14+/iOS 12+) Enterprise
Native TLS Windows, Linux, macOS, iOS, Android Geen (puur Object Pascal) Ja (en TLS 1.2) Standard, Professional, Enterprise of het sgcCrypto-pakket

Kies een backend

Elk transport heeft een eigen pagina met de volledige setup, code voor Delphi en C++Builder, implementatienotities en editiedetails.

OpenSSL (iohOpenSSL)

Cross-platform TLS over de socket van Indy, beschikbaar op elk platform dat sgcWebSockets ondersteunt en op de meeste de standaard. Volledige TLS 1.0 tot 1.3, de breedste cipher-dekking, custom CA, clientcertificaten en ALPN. Je implementeert de OpenSSL-runtime-bibliotheken samen met je app. Inbegrepen in elke editie. Op Windows kan het in plaats daarvan ook statisch worden gekoppeld in het uitvoerbare bestand, zonder iets te implementeren.

Lees de volledige handleiding →

SChannel (iohSChannel)

Microsofts native TLS-stack (Secure Channel / SSPI), ingebouwd in Windows. Geen bibliotheek-implementatie, geen OpenSSL-DLL's om te verzenden of te patchen, en het gebruikt de Windows-certificaatopslag. Alleen Windows. Inbegrepen in de edities Professional en Enterprise.

Lees de volledige handleiding →

Native Android-TLS (iohAndroidTLS)

Android-native TLS via de SSLEngine van het platform door middel van JNI. Geen OpenSSL .so in je APK, validatie tegen de Android-systeemvertrouwensopslag, TLS 1.3 en ALPN op Android 10 (API 29) en later. Enterprise-editie.

Lees de volledige handleiding →

Native Apple-TLS (iohAppleTLS)

Apple-native TLS voor iOS en macOS, zonder OpenSSL .dylib te implementeren. Het selecteert automatisch Network.framework (TLS 1.3) op macOS 10.14+ / iOS 12+ en valt terug op Secure Transport (TLS 1.2) op oudere systemen, met systeemvertrouwen, SNI, custom CA, clientcert / mTLS en ALPN. Enterprise-editie.

Lees de volledige handleiding →

Native TLS (iohNativeTLS)

Een TLS 1.3- en TLS 1.2-implementatie die volledig in Object Pascal is geschreven bovenop de sgcCrypto-units, zodat er helemaal niets te implementeren valt, op Windows, Linux, macOS, iOS of Android. Zet TLSOptions.IOHandler := iohNativeTLS op een client, of SSLOptions.IOHandler := iohNativeTLS op een server, inclusief de IOCP- en EPOLL-serverengines. TLSOptions.NativeTLS_Options.Groups en TLSOptions.NativeTLS_Options.CipherSuites nemen lijsten in OpenSSL-stijl, gescheiden door dubbele punten. Ze staan standaard op X25519MLKEM768:X25519:secp256r1:secp384r1 en TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 plus de standaardwaarden voor TLS 1.2, zodat een handshake met een peer die dat ondersteunt post-quantum hybride is zonder configuratie.

TLS 1.3 en TLS 1.2. TLSOptions.Version op een client, en SSLOptions.Version op een server, is de laagst toegestane versie: tls1_2 of tlsUndefined onderhandelt TLS 1.3 of TLS 1.2, en tls1_3 staat alleen TLS 1.3 toe. Vermeld voor alleen TLS 1.2 uitsluitend TLS 1.2-suites in NativeTLS_Options.CipherSuites. TLS 1.2 biedt standaard ECDHE_ECDSA en ECDHE_RSA met AES-128-GCM, AES-256-GCM en ChaCha20-Poly1305, terwijl de ECDHE AES-CBC-suites en de RSA-sleuteluitwisseling er alleen zijn als je ze zelf noemt. Het gebruikt X25519, secp256r1 of secp384r1, omdat de hybride post-quantum groepen alleen in TLS 1.3 bestaan. TLS 1.2 komt met de extended master secret van RFC 7627 en de downgradebescherming van RFC 8446 aan beide kanten, en weigert hernegotiatie en SHA-1-handtekeningen.

Wat hij niet doet. De engine spreekt alleen TLS 1.3 en TLS 1.2, zonder TLS 1.1, TLS 1.0 of SSL. Er is geen sessiehervatting en geen PSK, geen 0-RTT en geen QUIC. De vertrouwde roots komen uit TLSOptions.RootCertFile, plus de roots die het besturingssysteem vertrouwt wanneer NativeTLS_Options.UseSystemRoots op True staat, gelezen uit de Windows ROOT-store of een CA-bundelbestand en nooit uit de macOS- of iOS-sleutelhanger of de Android-store, en het component-event OnSSLVerifyPeer is er niet voor beschikbaar, de engine heeft eigen verificatiehooks. Blijf bij OpenSSL of een platform-backend wanneer je daar iets van nodig hebt.

Hij maakt deel uit van sgcCrypto, dus hij wordt geleverd vanaf de Standard-editie en in het standalone sgcCrypto-pakket.

Editie-opmerking

Native platform-TLS, Android (iohAndroidTLS) en Apple (iohAppleTLS), vereist de Enterprise-editie. OpenSSL (iohOpenSSL) is inbegrepen in elke editie; SChannel (iohSChannel) is inbegrepen in de edities Professional en Enterprise. Statische koppeling van OpenSSL op Windows vereist eveneens Enterprise of All-Access. Native TLS (iohNativeTLS) maakt deel uit van sgcCrypto en wordt dus geleverd vanaf de Standard-editie, en in het standalone sgcCrypto-pakket.

Wissel met één regel

Alle vijf backends delen dezelfde TLSOptions-API, dus ertussen wisselen is één enkele eigenschapswijziging. Niets anders in je code hoeft te veranderen.

TLS & VerifyCertificate

Schakel TLS in en zet peer-certificaatverificatie aan of uit op dezelfde manier voor elke backend.

RootCertFile

Wijs naar een custom CA-root om een privé- of zelfondertekende certificaatautoriteit te vertrouwen.

CertFile & Password

Lever een clientcertificaat en het bijbehorende wachtwoord aan voor mutual TLS (mTLS)-authenticatie.

ALPNProtocols

Adverteer applicatieprotocollen (bijvoorbeeld http/1.1) tijdens de TLS-handshake.

// Same TLSOptions, only the IOHandler line changes per platform.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Same TLSOptions, only the IOHandler line changes per platform.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Native TLS, geen OpenSSL te implementeren

Download de gratis proefversie en wissel van TLS-backend met één enkele regel code.