TsgcTCPClient › Properties › TLSOptions
Configureert certificaten, TLS-versie, ALPN, IOHandler en andere details voor beveiligde verbindingen die worden gebruikt wanneer TLS is ingeschakeld.
property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;
—
Alleen toegankelijk wanneer TLS True is. Subeigenschappen omvatten RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version (van tlsUndefined tot en met tls1_3), ALPNProtocols en IOHandler (iohOpenSSL, iohSChannel, iohAndroidTLS, iohAppleTLS of iohNativeTLS). Op Android gebruikt iohAndroidTLS de native TLS van het platform (javax.net.ssl.SSLEngine) en op iOS en macOS gebruikt iohAppleTLS de native TLS van Apple, zodat er geen OpenSSL-bibliotheken hoeven te worden gedistribueerd; native platform-TLS vereist de Enterprise-editie. OpenSSL-specifieke instellingen bevinden zich onder OpenSSL_Options en SChannel-specifieke instellingen onder SChannel_Options.
VerifyCertificate regelt certificaatvalidatie op dezelfde manier voor elke IOHandler, inclusief iohSChannel: de eigenschap staat standaard op False, zodat een server die een zelfondertekend of verlopen certificaat, of een certificaat voor een onjuiste hostnaam presenteert, zonder enige waarschuwing wordt geaccepteerd totdat dit op True wordt gezet. Bij SChannel wordt de validatie vervolgens uitgevoerd aan de hand van het Windows-certificaatarchief; OnSChannelVerifyPeer stelt de toepassing in staat om de keten te inspecteren of om een certificaat te accepteren dat anders zou worden geweigerd.
VerifyCertificate zegt niets over de vraag of het certificaat sinds de uitgifte is ingetrokken, zodat een gestolen sleutel waarvan het certificaat is ingetrokken maar nog niet is verlopen, zich nog steeds met succes authenticeert. Met iohSChannel wordt de intrekkingsstatus alleen gecontroleerd wanneer SChannel_Options.Revocation.Check op iets anders dan scrcDisabled (de standaardwaarde) is ingesteld: scrcEndCertificate controleert alleen het servercertificaat, scrcChainExcludeRoot controleert dit samen met de tussenliggende certificaten en scrcChain neemt ook het rootcertificaat mee. Revocation.Timeout begrenst het volledige ophalen van CRL- en OCSP-gegevens (standaard 5000 ms), zodat een onbereikbare responder de handshake niet kan blokkeren, Revocation.CacheOnly gebruikt alleen wat Windows al in de cache heeft opgeslagen en gaat nooit het netwerk op, en Revocation.IgnoreRevocationOffline en Revocation.IgnoreNoRevocationCheck (beide True) bepalen of een onbereikbare responder of een certificaat dat geen intrekkingsinformatie publiceert wordt geaccepteerd. Een certificaat waarvan is bevestigd dat het is ingetrokken, wordt altijd geweigerd. Het instellen van Preset := tlspSecureDefaults schakelt de controle in als scrcChainExcludeRoot. Zie SChannel Certificate Revocation.
IOHandler accepteert ook iohNativeTLS, de pure Object Pascal TLS-engine van het sgcCrypto-pack, die TLS 1.3 en TLS 1.2 spreekt. Deze laadt geen enkele OpenSSL-bibliotheek en biedt bij TLS 1.3 de hybride post-quantum sleuteluitwisselingsgroepen van RFC 10024, met X25519MLKEM768 als eerste, zodat een client die deze selecteert een post-quantum sleuteluitwisseling onderhandelt met elke server die er een ondersteunt. De twee voorkeurslijsten zijn NativeTLS_Options.Groups en NativeTLS_Options.CipherSuites, gescheiden door dubbele punten in de OpenSSL-stijl, en een lege lijst behoudt de standaardwaarden van de engine.
Voor de native engine is Version de laagste toegestane versie, niet een exacte versie zoals bij iohOpenSSL. tlsUndefined (de standaardwaarde) en tls1_2 onderhandelen TLS 1.3 of TLS 1.2, tls1_3 onderhandelt uitsluitend TLS 1.3, en tls1_0 of tls1_1 geven een configuratiefout bij het verbinden, omdat de engine alleen TLS 1.2 en TLS 1.3 ondersteunt. Voor uitsluitend TLS 1.2 geeft u alleen TLS 1.2-suites op, zoals TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, in NativeTLS_Options.CipherSuites. De engine vertrouwt de roots in RootCertFile, en NativeTLS_Options.UseSystemRoots (standaard False) voegt de roots toe die het besturingssysteem vertrouwt: het ROOT-certificaatarchief van Windows, de ankercertificaten van Security.framework op macOS (met /etc/ssl/cert.pem als terugval), een evaluatie van de tegenpartijketen door Security.framework op iOS, de map Conscrypt of /system/etc/security/cacerts op Android, en op Linux het eerste CA-bundelbestand dat wordt gevonden op een van zes standaardlocaties, te beginnen met /etc/ssl/certs/ca-certificates.crt. Wanneer geen systeem-root wordt gevonden, heeft VerifyCertificate := True een rootbestand nodig. CertFile mag ook een .pfx- of .p12-bestand zijn, geopend met Password. De engine hervat sessies met TLS 1.3- en TLS 1.2-sessietickets, bewaard in een sessiecache van het component, zodat een herverbinding de volledige handshake overslaat. NativeTLS_Options.SessionTickets (standaard True) schakelt dit in, en TLS 1.2-hervatting vereist dat de server het extended master secret ondersteunt. Hij verzendt geen 0-RTT-gegevens en genereert geen OnSSLVerifyPeer, dat bij de OpenSSL-handler hoort. Stel OpenSSL_Options.X509Checks.HostName of IPAddress in om de naam vast te leggen die het certificaat moet dragen, die de native engine eveneens leest. Zie Native TLS.
oTCP := TsgcTCPClient.Create(nil);
oTCP.Host := 'www.esegece.com';
oTCP.Port := 2053;
oTCP.TLS := true;
oTCP.TLSOptions.Version := tls1_2;
oTCP.TLSOptions.VerifyCertificate := true;
oTCP.TLSOptions.RootCertFile := 'cacert.pem';
oTCP.Active := true;