Attualmente Indy supporta solo la versione 1.0.2 di OpenSSL e diversi clienti ci hanno chiesto il supporto per OpenSSL 1.1. Anche se OpenSSL 1.0.2 è utilizzabile in questo momento perché supporta TLS 1.2 (la versione di protocollo standard), il team OpenSSL interromperà il supporto delle API 1.0 alla fine di quest'anno: questo significa che non saranno rilasciati altri aggiornamenti né correzioni per queste librerie, quindi sono brutte notizie per la libreria Indy.
Dopo molto lavoro interno abbiamo rilasciato una nuova versione della libreria sgcWebSockets che supporta le API OpenSSL 1.1.
supportata da sgcWebSockets 4.3.2
Attualmente ci sono quindi 2 versioni:
- Versione predefinita: identica alle versioni precedenti, richiede Indy installato nel tuo IDE.
- Versione Indy: è una versione Indy personalizzata, con supporto per le API OpenSSL 1.1 e non richiede che Indy sia installato. I file Indy sono stati rinominati, così puoi mantenere la tua libreria Indy compilando sgcWebSockets con i nostri sorgenti Indy personalizzati.
Per abilitare OpenSSL 1.1, accedi a OpenSSL_Options e seleziona quale API vuoi usare: oslAPI_1_0 o oslAPI_1_1. Esempio per il client:
oClient := TsgcWebSocketClient.Create(nil); oClient.Host := '127.0.0.1'; oclient.Port := 443; oClient.TLS := True; oClient.TLSOptions.OpenSSL_Options.APIVersion := oslAPI_1_1; oClient.Active := True;
Dopodiché puoi distribuire le tue librerie OpenSSL 1.1 invece di OpenSSL 1.0.2 che Indy usa per impostazione predefinita. A seconda del sistema operativo dovrai o meno distribuire le librerie openSSL.
| Piattaforma | API 1.0 | API 1.1 | Linking statico / dinamico |
| Windows (32 bit e 64 bit) | libeay32.dll and ssleay32.dll | libcrypto-1_1.dll and libssl-1_1.dll | Dinamico |
| OSX | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dinamico |
| iOS Device (32 bit e 64 bit) | libcrypto.a and libssl.a | libcrypto.a and libssl.a | Statico |
| iOS Simulator | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dinamico |
| Android Device | libcrypto.so, libssl.so | libcrypto.so, libssl.so | Dinamico |
