TsgcWebSocketClient › Propriétés › TLSOptions
Configure les certificats, la version TLS, ALPN, IOHandler et d'autres détails de connexion sécurisée utilisés lorsque TLS est activé.
property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;
Preset=tlspCustom
Accessible uniquement lorsque TLS vaut True. Les sous-propriétés incluent RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version (de tlsUndefined à tls1_3), ALPNProtocols et IOHandler (iohOpenSSL, iohSChannel, iohAndroidTLS ou iohAppleTLS). Sous Android, iohAndroidTLS utilise le TLS natif de la plateforme (javax.net.ssl.SSLEngine) et sous iOS et macOS, iohAppleTLS utilise le TLS natif Apple, de sorte qu'aucune bibliothèque OpenSSL n'a besoin d'être déployée ; le TLS natif de la plateforme nécessite l'édition Enterprise. Les paramètres spécifiques à OpenSSL se trouvent sous OpenSSL_Options et les paramètres spécifiques à SChannel sous SChannel_Options.
VerifyCertificate contrôle la validation du certificat de la même manière pour chaque IOHandler, y compris iohSChannel : elle vaut False par défaut, de sorte qu'un serveur présentant un certificat auto-signé, expiré ou dont le nom d'hôte est incorrect est accepté sans aucun avertissement tant qu'elle n'est pas définie sur True. Avec SChannel, la validation est alors effectuée par rapport au magasin de certificats Windows ; OnSChannelVerifyPeer permet à l'application d'inspecter la chaîne ou d'accepter un certificat qui serait autrement rejeté.
VerifyCertificate ne dit rien sur le fait que le certificat ait été révoqué ou non depuis sa délivrance, de sorte qu'une clé volée dont le certificat a été révoqué mais n'a pas encore expiré s'authentifie toujours. Avec iohSChannel, le statut de révocation n'est vérifié que lorsque SChannel_Options.Revocation.Check est défini sur une valeur autre que scrcDisabled (la valeur par défaut) : scrcEndCertificate vérifie uniquement le certificat du serveur, scrcChainExcludeRoot le vérifie avec les intermédiaires, et scrcChain inclut la racine. Revocation.Timeout limite l'ensemble de la récupération CRL et OCSP (5000 ms par défaut) afin qu'un répondeur inaccessible ne puisse pas bloquer le handshake, Revocation.CacheOnly utilise uniquement ce que Windows a déjà mis en cache et ne va jamais sur le réseau, et Revocation.IgnoreRevocationOffline et Revocation.IgnoreNoRevocationCheck (toutes deux True) décident si un répondeur inaccessible ou un certificat ne publiant aucune information de révocation est accepté. Un certificat confirmé révoqué est toujours rejeté. Voir SChannel Certificate Revocation.
Preset applique un ensemble de valeurs par défaut sécurisées en une seule affectation. Avec tlspCustom (valeur par défaut), chaque option conserve la valeur que vous configurez manuellement, préservant le comportement antérieur. Définir Preset := tlspSecureDefaults active la vérification du certificat (VerifyCertificate := True), élève Version à au moins TLS 1.2 (lorsqu'une version inférieure ou non définie était configurée), active le contrôle du nom d'hôte du certificat du serveur (validation du nom d'hôte OpenSSL X509Checks) et active la vérification de révocation SChannel en tant que scrcChainExcludeRoot. Les options individuelles peuvent toujours être ajustées après l'application du preset.
oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.Version := tls1_2;
oClient.TLSOptions.VerifyCertificate := true;
oClient.TLSOptions.RootCertFile := 'cacert.pem';
oClient.Active := true;