TClientSocket.SecureHandshake

TClientSocket = class (TObject)Interface de TClientSocketExemples de TClientSocket

Qubes 10.0 Effectue Handshake pour sécuriser la connexion avec TLS

Syntaxe

procedure SecureHandshake(ignore: TCertificateIgnores = []; timeOutMSec: Integer = 0)
ignore: aspects du certificat à ignorer éventuellement
timeoutMSec: durée d'attente maximum, si nul ou négatif la durée par défaut est appliquée

Remarques

Effectue l'achange cryptographique nécessaire pour sécuriser la connexion avec TLS1.x, en cas de succès, les envois et réceptions sur le connexions seront sécurisés. En cas d'échec une exception sera déclenchée.

Le paramètre optionnel ignore permet de réduire le niveau de sécurité en ignorant certains aspects:

  • CertificateIgnore.Revokation: ne prend pas en compte la révocation du certificate
  • CertificateIgnore.UnknownCA: autorise une autorité de certification inconnue (certificats auto-signés par exemple)
  • CertificateIgnore.WrongUsage: autorise une autorité de certificat conçu pour un autre usage que l'authentification TLS
  • CertificateIgnore.CNInvalid: accepte un certificat destiné à un autre nom de domaine
  • CertificateIgnore.DateInvalid: accepte un certificat expiré ou pas encore valide

A noter que pour qu'un certificat soit complètement validé, il faut non seulement ne rien ignorer, mais aussi avoir utiliser pour Connect le nom de domaine correct (et non une adresse IP ou un alias).

Pour utiliser de manière sécurisée un certificat auto-signé, il est nécessaire d'utiliser le certificate pinning:

  • effectuer le SecureHandshake avec [ CertificateIgnore.UnknownCA ]
  • puis vérifier que le CertificateFingerprint contient bien l'empreinte attendue

La durée du timeout par défaut est susceptible de dépendre du système d'exploitation et de patchs de sécurité, elle était de l'ordre de 10 secondes début 2024.

Exemples

 

Classification

Sockets TClientSocket