TsgcWebSocketLoadBalancerServer › Eigenschappen › SSLOptions

SSLOptions Eigenschap

Bevat certificaatpaden, TLS-versieselectie en OpenSSL-afstemming voor de TLS-listener van de load balancer.

Syntaxis

property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;

Standaardwaarde

Version=tlsUndefined, VerifyCertificate=False

Opmerkingen

Verstrek het certificaatmateriaal voordat u de load balancer activeert wanneer SSL True is: RootCertFile, CertFile en KeyFile verwijzen naar PEM-bestanden (gebruik hetzelfde pad voor alle drie wanneer het bestand de volledige keten bevat), en Password is alleen vereist als de privésleutel is versleuteld. Stel VerifyCertificate in op True om clientcertificaten aan te vragen en te valideren (sub-opties FailIfNoCertificate en VerifyClientOnce verfijnen de controle) met VerifyDepth voor de ketenlengte; dit is nuttig wanneer de registrerende backends een clientcertificaat moeten presenteren voor wederzijdse TLS. Version kiest een specifieke TLS-versie (tls1_0, tls1_1, tls1_2, tls1_3) of laat onderhandeling open (tlsUndefined). Met iohNativeTLS is dit in plaats daarvan de laagste toegestane versie, zie hieronder. OpenSSL_Options stelt low-level knoppen beschikbaar: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom, UnixSymLinks, ECDHE, CipherList, CurveList, VersionMin en X509Checks.

IOHandler selecteert de TLS-engine. iohOpenSSL is de standaardwaarde en iohSChannel gebruikt de Windows-provider. iohNativeTLS selecteert de pure Object Pascal TLS-engine van het sgcCrypto-pack, die TLS 1.3 en TLS 1.2 spreekt: er wordt geen OpenSSL-bibliotheek geladen, en bij TLS 1.3 worden de hybride post-quantum sleuteluitwisselingsgroepen van RFC 10024 aangeboden met X25519MLKEM768 als eerste. 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. De engine draait zowel op de klassieke engine met één thread per verbinding als op de IOCP- en EPOLL-engines. iohAppleTLS en iohAndroidTLS zijn client-only handlers: een server met een van beide geeft een uitzondering wanneer Active op True wordt gezet, tenzij OnSSLGetHandler een eigen handler levert. Gebruik in plaats daarvan iohNativeTLS, iohOpenSSL of, op Windows, iohSChannel.

Voor de native engine is Version de laagste toegestane versie, niet een exacte versie zoals bij iohOpenSSL. tlsUndefined (de standaardwaarde) en tls1_2 accepteren TLS 1.3 en TLS 1.2, tls1_3 accepteert uitsluitend TLS 1.3, en tls1_0 of tls1_1 geven een configuratiefout wanneer de server start, omdat de engine alleen TLS 1.2 en TLS 1.3 ondersteunt. Om uitsluitend TLS 1.2 te accepteren, geeft u alleen TLS 1.2-suites op, zoals TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, in NativeTLS_Options.CipherSuites. De engine valideert clientcertificaten aan de hand van de roots in RootCertFile, aangevuld met de roots die het besturingssysteem vertrouwt wanneer NativeTLS_Options.UseSystemRoots True is (standaard False). Met iohNativeTLS mag CertFile ook een .pfx- of .p12-bestand zijn met het certificaat, de keten en de sleutel, geopend met Password. De engine hervat sessies met TLS 1.3- en TLS 1.2-sessietickets: NativeTLS_Options.SessionTickets (standaard True) schakelt ze in en NativeTLS_Options.TicketLifetime (standaard 7200 seconden) bepaalt hoe lang een ticket gebruikt kan worden. TLS 1.2-hervatting vereist dat de client het extended master secret ondersteunt. Hij accepteert geen 0-RTT en genereert de gebeurtenis OnSSLVerifyPeer niet, die bij de OpenSSL-handler hoort. VerifyCertificate vraagt de client om een certificaat en valideert dit, VerifyCertificate_Options.FailIfNoCertificate weigert een client die er geen verzendt, en VerifyClientOnce heeft geen effect omdat de engine nooit heronderhandelt. Zie Native TLS.

Voorbeeld


oServer := TsgcWebSocketLoadBalancerServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.Version := tls1_3;
oServer.SSLOptions.OpenSSL_Options.VersionMin := tls1_2;
oServer.SSLOptions.Port := 443;
oServer.Active := true;

Terug naar Properties