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 nativo, uno stack TLS 1.3 e TLS 1.2 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) Sì Tutte le edizioni
SChannel Windows Nessuna (integrata in Windows) Sì (Windows 11/Server 2022+) Professional, Enterprise
TLS di Android Android Nessuna (usa il sistema operativo) Sì Enterprise
TLS di Apple iOS, macOS Nessuna (usa il sistema operativo) Sì (10.14+/iOS 12+) Enterprise
TLS nativo Windows, Linux, macOS, iOS, Android Nessuna (Object Pascal puro) Sì (anche TLS 1.2) 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 nativo (iohNativeTLS)

Un'implementazione di TLS 1.3 e TLS 1.2 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 più i valori predefiniti di TLS 1.2, quindi un handshake con un peer che li supporta è ibrido post-quantum senza alcuna configurazione.

TLS 1.3 e TLS 1.2. TLSOptions.Version su un client, e SSLOptions.Version su un server, è la versione minima consentita: tls1_2 o tlsUndefined negozia TLS 1.3 o TLS 1.2, mentre tls1_3 consente solo TLS 1.3. Per il solo TLS 1.2, elenca soltanto le suite TLS 1.2 in NativeTLS_Options.CipherSuites. TLS 1.2 offre per impostazione predefinita ECDHE_ECDSA ed ECDHE_RSA con AES-128-GCM, AES-256-GCM e ChaCha20-Poly1305, mentre le suite ECDHE AES-CBC e lo scambio di chiavi RSA sono disponibili solo se le nomini esplicitamente. Usa X25519, secp256r1 o secp384r1, perché i gruppi ibridi post-quantum esistono solo in TLS 1.3. TLS 1.2 include il master secret esteso della RFC 7627 e la protezione dal downgrade della RFC 8446 su entrambi i lati, e rifiuta la rinegoziazione e le firme SHA-1.

Che cosa non fa. Il motore parla solo TLS 1.3 e TLS 1.2, senza TLS 1.1, TLS 1.0 o SSL. Non c'è ripresa di sessione né PSK, niente 0-RTT e niente QUIC. Le radici di fiducia arrivano da TLSOptions.RootCertFile, più le radici di cui si fida il sistema operativo quando NativeTLS_Options.UseSystemRoots è True, lette dall'archivio ROOT di Windows o da un file CA bundle, mai dal portachiavi di macOS o iOS né dall'archivio di Android, 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 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.