Distribuire TLS con sgcWebSockets su Windows ha sempre significato includere libcrypto e libssl accanto al proprio eseguibile, abbinate alla versione e alla bitness giuste di OpenSSL. sgcWebSockets può ora collegare OpenSSL direttamente all'interno dell'eseguibile, così non c'è più nessuna DLL da distribuire, nessuna versione da far corrispondere e nessuna cartella in cui tenerle. È disponibile nelle edizioni Enterprise e All-Access.
Una sola unit, nient'altro da configurare
Non ci sono direttive di compilazione da abilitare né una versione dell'API OpenSSL da scegliere. Aggiungi la unit sgcIdSSLOpenSSL_Static alla clausola uses del tuo progetto e, dall'esecuzione successiva, la tua applicazione userà la libreria OpenSSL collegata nell'eseguibile, sia per i componenti client sia per quelli server.
uses
sgcWebSocket, sgcWebSocket_Classes,
sgcIdSSLOpenSSL_Static;
Rimuovi la unit dalla clausola uses e la tua applicazione tornerà a caricare le DLL OpenSSL esattamente come prima. Non c'è nient'altro da cambiare nel tuo codice: le impostazioni TLS, i certificati e la logica di connessione restano gli stessi in entrambi i casi.
Funziona su client e server, Win32 e Win64
Il collegamento statico si applica allo stesso modo a TsgcWebSocketClient e a TsgcWebSocketServer, e a qualsiasi altro componente sgcWebSockets o sgcIndy che passi attraverso TLS, sia nelle build a 32 bit sia in quelle a 64 bit. Un server che termina il TLS per centinaia di connessioni e un client che si collega a un singolo endpoint ottengono entrambi l'OpenSSL collegato staticamente allo stesso modo, semplicemente avendo la unit nel progetto.
OpenSSL 3.5.7, mantenuto aggiornato
La versione di OpenSSL attualmente collegata è la 3.5.7. Man mano che escono nuove versioni di OpenSSL, questa viene aggiornata nei futuri aggiornamenti di sgcWebSockets, quindi non è necessario monitorare, scaricare o ridistribuire i binari OpenSSL da soli: un normale aggiornamento del componente è sufficiente.
Requisiti
- Solo Windows, 32 bit e 64 bit. Non è disponibile su macOS, Android o iOS, e non fa parte dell'edizione .NET.
- Delphi XE2 o versioni successive. Le versioni di Delphi più vecchie non possono collegare un file oggetto in questo formato, quindi su quelle versioni la unit viene compilata senza alcun effetto e la tua applicazione continua a caricare le DLL OpenSSL come al solito, senza bisogno di modifiche al codice.
- Disponibile solo nelle edizioni Enterprise e All-Access di sgcWebSockets, e solo quando è in uso la libreria Indy personalizzata, che è l'impostazione predefinita per queste edizioni.
Se compili con una versione di Delphi precedente a XE2 e fai comunque riferimento alla unit aspettandoti che venga collegata, vedrai E2045 Bad object file format. La soluzione è semplicemente rimuovere sgcIdSSLOpenSSL_Static dalla clausola uses: la tua applicazione continuerà a funzionare con le DLL OpenSSL.
Quando è utile
Il collegamento statico è utile quando vuoi distribuire un unico file, quando non puoi garantire che la macchina di destinazione abbia già installata la DLL OpenSSL corretta, o quando il tuo processo di distribuzione non consente file aggiuntivi accanto all'eseguibile, ad esempio una directory di installazione bloccata o uno strumento distribuito come binario unico.
Disponibilità
Il collegamento statico di OpenSSL è disponibile nelle edizioni Enterprise e All-Access di sgcWebSockets. Per il quadro completo dei backend TLS supportati da sgcWebSockets su ogni piattaforma, consulta la sezione SSL / TLS e la pagina del backend TLS OpenSSL.
Scarica dalla pagina di download di sgcWebSockets, oppure ottienilo tramite GetIt o il tuo account registrato.
Domande, feedback o aiuto per pianificare una distribuzione senza DLL? Mettiti in contatto, riceverai una risposta dalle persone che hanno scritto il codice.
