TsgcWebSocketClient › Proprietà › TLSOptions
Configura certificati, versione TLS, ALPN, IOHandler e altri dettagli di connessione sicura utilizzati quando TLS è abilitato.
property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;
Preset=tlspCustom
Accessibile solo quando TLS è True. Le sotto-proprietà includono RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version (da tlsUndefined fino a tls1_3), ALPNProtocols e IOHandler (iohOpenSSL, iohSChannel, iohAndroidTLS o iohAppleTLS). Su Android, iohAndroidTLS utilizza il TLS nativo della piattaforma (javax.net.ssl.SSLEngine) e su iOS e macOS, iohAppleTLS utilizza il TLS nativo di Apple, quindi non è necessario distribuire alcuna libreria OpenSSL; il TLS nativo della piattaforma richiede l'edizione Enterprise. Le impostazioni specifiche di OpenSSL si trovano in OpenSSL_Options e quelle specifiche di SChannel in SChannel_Options.
VerifyCertificate controlla la verifica del certificato allo stesso modo per ogni IOHandler, incluso iohSChannel: il valore predefinito è False, quindi un server che presenta un certificato autofirmato, scaduto o con un hostname errato viene accettato senza alcun avviso finché non viene impostato su True. Con SChannel, la verifica viene quindi eseguita rispetto allo store di certificati di Windows; OnSChannelVerifyPeer consente all'applicazione di ispezionare la catena o di accettare un certificato che altrimenti verrebbe rifiutato.
VerifyCertificate non dice nulla sul fatto che il certificato sia stato revocato dopo la sua emissione, quindi una chiave rubata il cui certificato è stato revocato ma non è ancora scaduto continua ad autenticarsi. Con iohSChannel, lo stato di revoca viene verificato solo quando SChannel_Options.Revocation.Check è impostato su un valore diverso da scrcDisabled (il predefinito): scrcEndCertificate verifica solo il certificato del server, scrcChainExcludeRoot lo verifica insieme ai certificati intermedi e scrcChain include anche la radice. Revocation.Timeout limita l'intero recupero di CRL e OCSP (5000 ms per impostazione predefinita) in modo che un responder irraggiungibile non possa bloccare l'handshake, Revocation.CacheOnly utilizza solo ciò che Windows ha già presente nella cache e non accede mai alla rete, e Revocation.IgnoreRevocationOffline e Revocation.IgnoreNoRevocationCheck (entrambe True) decidono se accettare un responder irraggiungibile o un certificato che non pubblica informazioni di revoca. Un certificato confermato revocato viene sempre rifiutato. Vedere SChannel Certificate Revocation.
Preset applica un insieme di impostazioni predefinite sicure in un'unica assegnazione. Con tlspCustom (predefinito) ogni opzione mantiene il valore configurato manualmente, preservando il comportamento precedente. Impostando Preset := tlspSecureDefaults si abilita la verifica del certificato (VerifyCertificate := True), si eleva Version almeno a TLS 1.2 (quando era configurata una versione inferiore o non definita), si abilita il controllo del nome host del certificato del server (validazione hostname X509Checks di OpenSSL) e si abilita il controllo di revoca SChannel come scrcChainExcludeRoot. Le singole opzioni possono ancora essere regolate dopo l'applicazione del 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;