Momenteel ondersteunt Indy alleen OpenSSL-versie 1.0.2 en diverse klanten hebben ons gevraagd over ondersteuning voor OpenSSL 1.1. Hoewel OpenSSL 1.0.2 op dit moment bruikbaar is omdat het TLS 1.2 ondersteunt, wat de standaard protocolversie is, zal het OpenSSL-team aan het einde van dit jaar stoppen met het ondersteunen van de 1.0-API, wat betekent dat er geen updates meer worden uitgebracht en geen fixes meer worden toegepast op deze bibliotheken; dit is dus slecht nieuws voor de Indy-bibliotheek.
Na veel intern werk hebben we een nieuwe versie uitgebracht van de sgcWebSockets-bibliotheek die OpenSSL 1.1-API ondersteunt.
ondersteund vanaf sgcWebSockets 4.3.2
Er zijn momenteel dus 2 versies:
- Standaardversie: zal hetzelfde zijn als eerdere versies, vereist dat Indy in je IDE is geïnstalleerd.
- Indy-versie: is een aangepaste Indy-versie met OpenSSL-API 1.1-ondersteuning en vereist niet dat Indy is geïnstalleerd. De Indy-bestanden zijn hernoemd, dus je kunt je eigen Indy-bibliotheek behouden terwijl je sgcWebSockets compileert met onze aangepaste Indy-bronnen.
Om OpenSSL 1.1 in te schakelen, ga je naar OpenSSL_Options en selecteer je welke API je wilt gebruiken: oslAPI_1_0 of oslAPI_1_1. Voorbeeld voor de 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;
Daarna kun je je OpenSSL 1.1-bibliotheken deployen in plaats van OpenSSL 1.0.2 die Indy standaard gebruikt. Afhankelijk van je besturingssysteem moet je wel of geen openSSL-bibliotheken deployen.
| Platform | API 1.0 | API 1.1 | Statische / dynamische linking |
| Windows (32-bit and 64-bit) | libeay32.dll and ssleay32.dll | libcrypto-1_1.dll and libssl-1_1.dll | Dynamic |
| OSX | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dynamic |
| iOS Device (32-bit and 64-bit) | libcrypto.a and libssl.a | libcrypto.a and libssl.a | Static |
| iOS Simulator | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dynamic |
| Android Device | libcrypto.so, libssl.so | libcrypto.so, libssl.so | Dynamic |
