Actualmente, Indy solo soporta la versión 1.0.2 de OpenSSL y varios clientes nos han preguntado sobre el soporte para OpenSSL 1.1. Aunque OpenSSL 1.0.2 es utilizable en este momento porque soporta TLS 1.2, que es la versión del protocolo estándar, el equipo de OpenSSL dejará de dar soporte a la API 1.0 a finales de este año; esto significa que no se publicarán más actualizaciones ni se aplicarán más correcciones a estas librerías, así que son malas noticias para la librería Indy.
Tras mucho trabajo interno hemos lanzado una nueva versión de la librería sgcWebSockets que soporta la API OpenSSL 1.1.
soportado desde sgcWebSockets 4.3.2
Por lo tanto, actualmente hay 2 versiones:
- Versión por defecto: será la misma que las versiones anteriores, que requiere tener Indy instalado en tu IDE.
- Versión Indy: es una versión personalizada de Indy con soporte para la API OpenSSL 1.1 y no requiere tener Indy instalado. Los archivos de Indy se han renombrado para que puedas mantener tu propia librería Indy mientras compilas sgcWebSockets con nuestras fuentes personalizadas de Indy.
Para habilitar OpenSSL 1.1, solo tienes que acceder a OpenSSL_Options y seleccionar qué API quieres usar: oslAPI_1_0 o oslAPI_1_1. Ejemplo para cliente:
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;
Después de esto, puedes desplegar tus librerías OpenSSL 1.1 en lugar de las OpenSSL 1.0.2 que usa Indy por defecto. Dependiendo de tu sistema operativo, deberás desplegar o no las librerías openSSL.
| Plataforma | API 1.0 | API 1.1 | Enlazado estático / dinámico |
| Windows (32 bits y 64 bits) | libeay32.dll and ssleay32.dll | libcrypto-1_1.dll and libssl-1_1.dll | Dinámico |
| OSX | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dinámico |
| iOS Device (32 bits y 64 bits) | libcrypto.a and libssl.a | libcrypto.a and libssl.a | Estático |
| iOS Simulator | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dinámico |
| Android Device | libcrypto.so, libssl.so | libcrypto.so, libssl.so | Dinámico |
