Collegamento statico di OpenSSL in sgcWebSockets: niente più DLL libcrypto e libssl | eSeGeCe Blog

Collegamento statico di OpenSSL in sgcWebSockets: niente più DLL libcrypto e libssl

· Componenti

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

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.