Backend SSL / TLS

sgcWebSockets include cinque trasporti TLS intercambiabili dietro un'unica proprietà, TLSOptions.IOHandler. Scegli OpenSSL per la massima portabilità, un backend nativo della piattaforma (Windows SChannel, Android, iOS/macOS) che usa lo stack TLS del sistema operativo senza alcuna libreria OpenSSL da distribuire, oppure il motore TLS 1.3 nativo, uno stack TLS 1.3 scritto in Object Pascal che non porta alcuna dipendenza su nessun target e negozia per impostazione predefinita lo scambio di chiavi post-quantum X25519MLKEM768. Su Windows, anche OpenSSL stesso può essere collegato staticamente nel tuo eseguibile, così puoi restare su OpenSSL senza nulla da distribuire. Cambiare backend è una sola riga di codice, niente altro cambia.

Cinque trasporti TLS, una proprietà

Ogni backend si collega alla stessa API TLSOptions. Scegli quello adatto alla tua piattaforma e alla tua distribuzione, poi imposta TLSOptions.IOHandler.

Confronto dei backend

Piattaforme, ingombro di distribuzione, supporto TLS 1.3 ed edizione per ogni trasporto.

Backend Piattaforme Libreria da distribuire TLS 1.3 Edizione
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, oppure nessuna su Windows (collegamento statico) Tutte le edizioni
SChannel Windows Nessuna (integrata in Windows) (Windows 11/Server 2022+) Professional, Enterprise
TLS di Android Android Nessuna (usa il sistema operativo) Enterprise
TLS di Apple iOS, macOS Nessuna (usa il sistema operativo) (10.14+/iOS 12+) Enterprise
TLS 1.3 nativo Windows, Linux, macOS, iOS, Android Nessuna (Object Pascal puro) (solo TLS 1.3) Standard, Professional, Enterprise oppure il pacchetto sgcCrypto

Scegli un backend

Ogni trasporto ha la sua pagina con la configurazione completa, il codice per Delphi e C++ Builder, le note di distribuzione e i dettagli sull'edizione.

OpenSSL (iohOpenSSL)

TLS multipiattaforma sul socket di Indy, disponibile su ogni piattaforma supportata da sgcWebSockets e predefinito sulla maggior parte di esse. TLS dalla 1.0 alla 1.3 completo, la più ampia copertura di cifrari, CA personalizzata, certificati client e ALPN. Distribuisci le librerie runtime di OpenSSL insieme alla tua applicazione. Incluso in ogni edizione. Su Windows, può anche essere collegato staticamente nell'eseguibile, senza nulla da distribuire.

Leggi la guida completa →

SChannel (iohSChannel)

Lo stack TLS nativo di Microsoft (Secure Channel / SSPI), integrato in Windows. Zero distribuzione di librerie, nessuna DLL OpenSSL da spedire o aggiornare, e usa l'archivio certificati di Windows. Solo Windows. Incluso nelle edizioni Professional ed Enterprise.

Leggi la guida completa →

TLS nativo di Android (iohAndroidTLS)

TLS nativo di Android che usa l'SSLEngine della piattaforma tramite JNI. Nessun .so OpenSSL nel tuo APK, convalida rispetto all'archivio di trust di sistema di Android, TLS 1.3 e ALPN su Android 10 (API 29) e versioni successive. Edizione Enterprise.

Leggi la guida completa →

TLS nativo di Apple (iohAppleTLS)

TLS nativo di Apple per iOS e macOS, senza alcun .dylib OpenSSL da distribuire. Seleziona automaticamente Network.framework (TLS 1.3) su macOS 10.14+ / iOS 12+ e ricade su Secure Transport (TLS 1.2) sui sistemi più datati, con trust di sistema, SNI, CA personalizzata, certificato client / mTLS e ALPN. Edizione Enterprise.

Leggi la guida completa →

TLS 1.3 nativo (iohNativeTLS)

Un'implementazione di TLS 1.3 scritta interamente in Object Pascal sopra le unit di sgcCrypto, quindi non distribuisce assolutamente nulla, né su Windows, né su Linux, macOS, iOS o Android. Imposta TLSOptions.IOHandler := iohNativeTLS su un client, oppure SSLOptions.IOHandler := iohNativeTLS su un server, motori server IOCP ed EPOLL inclusi. TLSOptions.NativeTLS_Options.Groups e TLSOptions.NativeTLS_Options.CipherSuites accettano elenchi separati da due punti, in stile OpenSSL. I valori predefiniti sono X25519MLKEM768:X25519:secp256r1:secp384r1 e TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256, quindi un handshake con un peer che li supporta è ibrido post-quantum senza alcuna configurazione.

Che cosa non fa. Il motore parla solo TLS 1.3 (RFC 8446), senza fallback a TLS 1.2. Non c'è ripresa di sessione né PSK, niente 0-RTT e niente QUIC. Non legge l'archivio certificati di sistema, le radici di fiducia arrivano da TLSOptions.RootCertFile, e l'evento del componente OnSSLVerifyPeer non è disponibile per questo motore, che ha i propri hook di verifica. Resta su OpenSSL o su un backend di piattaforma quando ti serve una di queste cose.

Fa parte di sgcCrypto, quindi è incluso dall'edizione Standard in su e nel pacchetto sgcCrypto autonomo.

Nota sull'edizione

Il TLS nativo della piattaforma, Android (iohAndroidTLS) e Apple (iohAppleTLS), richiede l'edizione Enterprise. OpenSSL (iohOpenSSL) è incluso in ogni edizione; SChannel (iohSChannel) è incluso nelle edizioni Professional ed Enterprise. Il collegamento statico di OpenSSL su Windows richiede anche Enterprise o All-Access. Il TLS 1.3 nativo (iohNativeTLS) fa parte di sgcCrypto, quindi è incluso dall'edizione Standard in su e nel pacchetto sgcCrypto autonomo.

Cambia con una sola riga

Tutti e cinque i backend condividono la stessa API TLSOptions, quindi passare dall'uno all'altro è un singolo cambio di proprietà. Niente altro nel tuo codice deve cambiare.

TLS e VerifyCertificate

Abilita il TLS e attiva la verifica del certificato del peer allo stesso modo su ogni backend.

RootCertFile

Punta a una CA radice personalizzata per fidarti di un'autorità di certificazione privata o autofirmata.

CertFile e Password

Fornisci un certificato client e la sua password per l'autenticazione TLS reciproca (mTLS).

ALPNProtocols

Annuncia i protocolli applicativi (ad esempio http/1.1) durante l'handshake TLS.

// Stessa TLSOptions, cambia solo la riga IOHandler per piattaforma.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // oppure 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;
// Stessa TLSOptions, cambia solo la riga IOHandler per piattaforma.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // oppure 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;
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

TLS nativo, zero OpenSSL da distribuire

Scarica la versione di prova gratuita e cambia backend TLS con una sola riga di codice.