Backend TLS OpenSSL — sgcWebSockets | eSeGeCe

Backend TLS OpenSSL

OpenSSL (iohOpenSSL) è il trasporto TLS multipiattaforma per sgcWebSockets. Funziona su ogni piattaforma supportata dalla libreria ed è il predefinito sulla maggior parte di esse, con la più ampia copertura di protocolli e cifrari tra tutti i backend. Abilitalo impostando TLSOptions.IOHandler su iohOpenSSL, poi distribuisci le librerie runtime di OpenSSL insieme alla tua applicazione.

← Tutti i backend TLS

OpenSSL (iohOpenSSL)

TLS multipiattaforma implementato sul socket di Indy, disponibile su ogni piattaforma supportata da sgcWebSockets.

OpenSSL è l'implementazione TLS multipiattaforma che sgcWebSockets sovrappone al socket di Indy. È disponibile su Windows, Linux, macOS, iOS e Android, ed è il backend predefinito sulla maggior parte di essi. Scegli OpenSSL quando hai bisogno di un comportamento TLS identico su ogni piattaforma, oppure quando dipendi da una funzionalità esposta solo da OpenSSL.

Il backend copre TLS dalla 1.0 alla 1.3 con la più ampia selezione di suite di cifrari di qualsiasi trasporto sgcWebSockets. Puoi fidarti di un'autorità privata o autofirmata con una CA radice personalizzata (RootCertFile), presentare un certificato client per il TLS reciproco e annunciare protocolli applicativi come http/1.1 tramite ALPN. Poiché tutti e quattro i backend condividono la stessa API TLSOptions, il codice scritto per OpenSSL passa a un backend nativo cambiando solo la riga IOHandler.

Il compromesso è la distribuzione. OpenSSL è una dipendenza esterna, quindi spedisci le sue librerie runtime con la tua applicazione e le mantieni aggiornate. Su Windows significa libssl-3.dll e libcrypto-3.dll, su Linux e Android i file .so corrispondenti e sulle piattaforme Apple i file .dylib. Se desideri un TLS nativo senza alcuna libreria da distribuire, dai un'occhiata a SChannel su Windows oppure ai backend nativi di Android e Apple, oppure continua a usare OpenSSL collegandolo staticamente nel tuo eseguibile Windows, vedi sotto.

Abilita OpenSSL

Imposta TLSOptions.IOHandler su iohOpenSSL, poi distribuisci le librerie OpenSSL con la tua 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;

Spedire le librerie OpenSSL

OpenSSL è una dipendenza esterna, quindi le librerie runtime viaggiano con la tua applicazione su ogni piattaforma.

Windows

Distribuisci libssl-3.dll e libcrypto-3.dll accanto al tuo eseguibile (la build a 32 o 64 bit corrispondente al tuo target), oppure evita del tutto le DLL collegando OpenSSL staticamente, vedi sotto.

Linux e Android

Includi i file .so corrispondenti di libssl e libcrypto, poi caricali da un percorso che la tua applicazione può raggiungere a runtime.

macOS, iOS

Spedisci i file .dylib di libssl e libcrypto con il bundle dell'app in modo che il runtime di OpenSSL sia disponibile sul dispositivo.

Mantienile aggiornate

Poiché le librerie sono tue da distribuire, sei responsabile del loro aggiornamento quando viene rilasciata una correzione di sicurezza.

Collega OpenSSL nell'eseguibile

Su Windows, OpenSSL può essere collegato direttamente all'interno del tuo .exe invece di essere caricato da libssl-3.dll e libcrypto-3.dll a runtime.

Aggiungi l'unità sgcIdSSLOpenSSL_Static alla clausola uses del tuo progetto e non c'è nient'altro da configurare: nessuna direttiva del compilatore da abilitare, nessuna versione dell'API OpenSSL da scegliere. La tua applicazione inizia a usare la libreria OpenSSL collegata nell'eseguibile alla successiva esecuzione, sia per i componenti client sia per quelli server, nelle build a 32 e 64 bit. Rimuovi l'unità dalla clausola uses e la tua applicazione torna a caricare le DLL di OpenSSL esattamente come prima.

uses
  sgcWebSocket, sgcWebSocket_Classes,
  sgcIdSSLOpenSSL_Static;

La versione di OpenSSL attualmente collegata è la 3.5.7, aggiornata negli aggiornamenti futuri in modo che tu non debba tracciare o ridistribuire tu stesso i binari di OpenSSL. Il collegamento statico richiede Delphi XE2 o versioni successive e la libreria Indy personalizzata (l'impostazione predefinita in queste edizioni); nelle versioni di Delphi precedenti l'unità viene compilata a vuoto e la tua applicazione continua a caricare le DLL di OpenSSL come di consueto.

Nota sull'edizione

OpenSSL (iohOpenSSL) è incluso in tutte le edizioni di sgcWebSockets. Consulta la matrice delle funzionalità per il dettaglio completo.

Il collegamento statico su Windows richiede Delphi XE2 o versioni successive ed è disponibile nelle edizioni Enterprise e All-Access.

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 multipiattaforma in una riga

Scarica la versione di prova gratuita e aggiungi il TLS basato su OpenSSL alle tue app Delphi e C++Builder.