Backends SSL / TLS

sgcWebSockets propose cinq transports TLS interchangeables derrière une seule propriété, TLSOptions.IOHandler. Choisissez OpenSSL pour une portabilité maximale, un backend natif de plateforme (Windows SChannel, Android, iOS/macOS) qui utilise la pile TLS du système d'exploitation, sans aucune bibliothèque OpenSSL à déployer, ou le moteur Native TLS, une pile TLS 1.3 et TLS 1.2 écrite en Object Pascal qui n'emporte aucune dépendance sur aucune cible et qui négocie par défaut l'échange de clés post-quantique X25519MLKEM768. Sous Windows, OpenSSL lui-même peut aussi être lié statiquement dans votre exécutable, pour rester sur OpenSSL sans rien à déployer non plus. Changer de backend tient en une ligne de code, rien d'autre ne change.

Cinq transports TLS, une seule propriété

Chaque backend se branche sur la même API TLSOptions. Choisissez celui qui correspond à votre plateforme et à votre déploiement, puis définissez TLSOptions.IOHandler.

Comparaison des backends

Plateformes, empreinte de déploiement, prise en charge de TLS 1.3 et édition pour chaque transport.

Backend Plateformes Bibliothèque à déployer TLS 1.3 Édition
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, ou aucune sous Windows (liaison statique) Oui Toutes les éditions
SChannel Windows Aucune (intégrée à Windows) Oui (Windows 11/Server 2022+) Professional, Enterprise
TLS Android Android Aucune (utilise le système d'exploitation) Oui Enterprise
TLS Apple iOS, macOS Aucune (utilise le système d'exploitation) Oui (10.14+/iOS 12+) Enterprise
Native TLS Windows, Linux, macOS, iOS, Android Aucune (Object Pascal pur) Oui (et TLS 1.2) Standard, Professional, Enterprise, ou le pack sgcCrypto

Choisissez un backend

Chaque transport possède sa propre page avec la configuration complète, le code pour Delphi et C++Builder, les notes de déploiement et les détails d'édition.

OpenSSL (iohOpenSSL)

TLS multiplateforme sur le socket d'Indy, disponible sur chaque plateforme ciblée par sgcWebSockets et utilisé par défaut sur la plupart. TLS 1.0 à 1.3 complet, la plus large couverture de chiffrements, CA personnalisée, certificats client et ALPN. Vous déployez les bibliothèques d'exécution OpenSSL avec votre application. Inclus dans toutes les éditions. Sous Windows, il peut aussi être lié statiquement dans l'exécutable à la place, sans rien à déployer.

Lire le guide complet →

SChannel (iohSChannel)

La pile TLS native de Microsoft (Secure Channel / SSPI), intégrée à Windows. Aucun déploiement de bibliothèque, aucune DLL OpenSSL à livrer ou à corriger, et elle utilise le magasin de certificats Windows. Windows uniquement. Inclus dans les éditions Professional et Enterprise.

Lire le guide complet →

TLS natif Android (iohAndroidTLS)

TLS natif Android utilisant le SSLEngine de la plateforme via JNI. Aucun .so OpenSSL dans votre APK, validation contre le magasin de confiance système d'Android, TLS 1.3 et ALPN sur Android 10 (API 29) et versions ultérieures. Édition Enterprise.

Lire le guide complet →

TLS natif Apple (iohAppleTLS)

TLS natif Apple pour iOS et macOS, sans aucun .dylib OpenSSL à déployer. Il sélectionne automatiquement Network.framework (TLS 1.3) sur macOS 10.14+ / iOS 12+ et revient à Secure Transport (TLS 1.2) sur les systèmes plus anciens, avec confiance système, SNI, CA personnalisée, certificat client / mTLS et ALPN. Édition Enterprise.

Lire le guide complet →

Native TLS (iohNativeTLS)

Une implémentation de TLS 1.3 et TLS 1.2 écrite entièrement en Object Pascal au-dessus des unités sgcCrypto, qui ne déploie donc absolument rien, sous Windows, Linux, macOS, iOS ou Android. Affectez TLSOptions.IOHandler := iohNativeTLS sur un client, ou SSLOptions.IOHandler := iohNativeTLS sur un serveur, moteurs de serveur IOCP et EPOLL compris. TLSOptions.NativeTLS_Options.Groups et TLSOptions.NativeTLS_Options.CipherSuites acceptent des listes séparées par des deux-points, dans le style OpenSSL. Elles valent par défaut X25519MLKEM768:X25519:secp256r1:secp384r1 et TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 plus les valeurs par défaut de TLS 1.2, si bien qu'une négociation face à un pair compatible est déjà hybride post-quantique sans aucune configuration.

TLS 1.3 et TLS 1.2. TLSOptions.Version sur un client, et SSLOptions.Version sur un serveur, indique la version minimale autorisée : tls1_2 ou tlsUndefined négocie TLS 1.3 ou TLS 1.2, et tls1_3 n'autorise que TLS 1.3. Pour rester en TLS 1.2 uniquement, ne listez que des suites TLS 1.2 dans NativeTLS_Options.CipherSuites. TLS 1.2 propose par défaut ECDHE_ECDSA et ECDHE_RSA avec AES-128-GCM, AES-256-GCM et ChaCha20-Poly1305, tandis que les suites ECDHE AES-CBC et l'échange de clés RSA ne sont présents que si vous les nommez. Il utilise X25519, secp256r1 ou secp384r1, car les groupes hybrides post-quantiques n'existent qu'en TLS 1.3. TLS 1.2 intègre l'extended master secret de la RFC 7627 et la protection anti-rétrogradation de la RFC 8446 des deux côtés, et refuse la renégociation ainsi que les signatures SHA-1.

Ce qu'il ne fait pas. Le moteur ne parle que TLS 1.3 et TLS 1.2, sans TLS 1.1, TLS 1.0 ni SSL. Il n'y a ni reprise de session ni PSK, pas de 0-RTT et pas de QUIC. Les racines de confiance proviennent de TLSOptions.RootCertFile, ainsi que des racines approuvées par le système d'exploitation quand NativeTLS_Options.UseSystemRoots vaut True, lues depuis le magasin ROOT de Windows ou un fichier CA bundle, jamais depuis le trousseau macOS ou iOS ni depuis le magasin Android, et l'événement de composant OnSSLVerifyPeer n'est pas disponible pour lui, le moteur possède ses propres points d'accroche de vérification. Restez sur OpenSSL ou sur un backend de plateforme si vous avez besoin de l'un de ces éléments.

Il fait partie de sgcCrypto, il est donc livré à partir de l'édition Standard et dans le pack sgcCrypto autonome.

Note sur les éditions

Le TLS natif de plateforme, Android (iohAndroidTLS) et Apple (iohAppleTLS), nécessite l'édition Enterprise. OpenSSL (iohOpenSSL) est inclus dans toutes les éditions ; SChannel (iohSChannel) est inclus dans les éditions Professional et Enterprise. La liaison statique d'OpenSSL sous Windows nécessite également l'édition Enterprise ou All-Access. Native TLS (iohNativeTLS) fait partie de sgcCrypto, il est donc livré à partir de l'édition Standard, ainsi que dans le pack sgcCrypto autonome.

Changez avec une seule ligne

Les cinq backends partagent la même API TLSOptions, donc passer de l'un à l'autre se résume à un changement de propriété. Rien d'autre dans votre code n'a à changer.

TLS & VerifyCertificate

Activez TLS et basculez la vérification du certificat du pair de la même manière sur chaque backend.

RootCertFile

Pointez vers une racine CA personnalisée pour faire confiance à une autorité de certification privée ou auto-signée.

CertFile & Password

Fournissez un certificat client et son mot de passe pour l'authentification mutuelle TLS (mTLS).

ALPNProtocols

Annoncez les protocoles applicatifs (par exemple http/1.1) pendant la négociation TLS.

// Mêmes TLSOptions, seule la ligne IOHandler change selon la plateforme.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // ou iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Mêmes TLSOptions, seule la ligne IOHandler change selon la plateforme.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // ou iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

TLS natif, zéro OpenSSL à déployer

Téléchargez l'essai gratuit et changez de backend TLS avec une seule ligne de code.