Actuellement, Indy ne prend en charge que la version OpenSSL 1.0.2 et plusieurs clients nous ont posé des questions sur la prise en charge d'OpenSSL 1.1. Bien qu'OpenSSL 1.0.2 soit utilisable pour l'instant car il prend en charge TLS 1.2, qui est la version standard du protocole, l'équipe OpenSSL va arrêter de prendre en charge l'API 1.0 à la fin de cette année. Cela signifie qu'aucune mise à jour ne sera plus publiée et qu'aucun correctif ne sera plus appliqué à ces bibliothèques ; c'est une mauvaise nouvelle pour la bibliothèque Indy.
Après beaucoup de travail interne, nous avons publié une nouvelle version de la bibliothèque sgcWebSockets qui prend en charge l'API OpenSSL 1.1.
pris en charge à partir de sgcWebSockets 4.3.2
Il existe donc actuellement 2 versions :
- Version par défaut : identique aux versions précédentes, nécessite qu'Indy soit installé dans ton IDE.
- Version Indy : c'est une version Indy personnalisée, avec prise en charge de l'API OpenSSL 1.1 et qui ne nécessite pas qu'Indy soit installé. Les fichiers Indy ont été renommés, donc tu peux conserver ta propre bibliothèque Indy tout en compilant sgcWebSockets avec nos sources Indy personnalisées.
Pour activer OpenSSL 1.1, accède simplement à OpenSSL_Options et sélectionne quelle API utiliser : oslAPI_1_0 ou oslAPI_1_1. Exemple côté 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;
Ensuite, tu peux déployer tes bibliothèques OpenSSL 1.1 au lieu d'OpenSSL 1.0.2 qu'Indy utilise par défaut. Selon ton système d'exploitation, tu dois ou non déployer les bibliothèques openSSL.
| Plateforme | API 1.0 | API 1.1 | Liaison statique / dynamique |
| Windows (32 bits et 64 bits) | libeay32.dll and ssleay32.dll | libcrypto-1_1.dll and libssl-1_1.dll | Dynamique |
| OSX | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dynamique |
| Appareil iOS (32 bits et 64 bits) | libcrypto.a and libssl.a | libcrypto.a and libssl.a | Statique |
| Simulateur iOS | libcrypto.dylib, libssl.dylib | libcrypto.1.1.dylib, libssl.1.1.dylib | Dynamique |
| Appareil Android | libcrypto.so, libssl.so | libcrypto.so, libssl.so | Dynamique |
