TsgcWebSocketLoadBalancerServer › Właściwości › SSLOptions

SSLOptions Właściwość

Przechowuje ścieżki certyfikatów, wybór wersji TLS i ustawienia OpenSSL dla listenera TLS load balancera.

Składnia

property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;

Wartość domyślna

Version=tlsUndefined, VerifyCertificate=False

Uwagi

Przed aktywowaniem modułu równoważenia obciążenia, gdy SSL jest ustawione na True, należy podać materiał certyfikatu: RootCertFile, CertFile i KeyFile wskazują pliki PEM (użyj tej samej ścieżki dla wszystkich trzech, gdy plik zawiera pełny łańcuch), a Password jest wymagane tylko wtedy, gdy klucz prywatny jest szyfrowany. Ustaw VerifyCertificate na True, aby żądać i weryfikować certyfikaty klientów (podopcje FailIfNoCertificate i VerifyClientOnce precyzują sprawdzenie), a VerifyDepth kontroluje długość łańcucha; jest to przydatne, gdy rejestrowane backendy muszą przedstawiać certyfikat klienta dla wzajemnego TLS. Version wybiera określoną wersję TLS (tls1_0, tls1_1, tls1_2, tls1_3) lub pozostawia negocjację otwartą (tlsUndefined). Z iohNativeTLS jest to natomiast najniższa dozwolona wersja, zobacz poniżej. OpenSSL_Options udostępnia szczegółowe ustawienia: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom, UnixSymLinks, ECDHE, CipherList, CurveList, VersionMin i X509Checks.

IOHandler wybiera silnik TLS. iohOpenSSL jest wartością domyślną, a iohSChannel korzysta z dostawcy systemu Windows. iohNativeTLS wybiera silnik TLS napisany w całości w Object Pascal, wchodzący w skład pakietu sgcCrypto, obsługujący TLS 1.3 i TLS 1.2: nie jest ładowana żadna biblioteka OpenSSL, a w TLS 1.3 hybrydowe postkwantowe grupy wymiany kluczy z RFC 10024 są oferowane z X25519MLKEM768 na pierwszym miejscu. Jego dwie listy preferencji to NativeTLS_Options.Groups i NativeTLS_Options.CipherSuites, rozdzielane dwukropkami w stylu OpenSSL, a pusta lista pozostawia domyślne ustawienia silnika. Silnik działa zarówno w klasycznym modelu jeden wątek na połączenie, jak i na silnikach IOCP oraz EPOLL. iohAppleTLS i iohAndroidTLS to handlery wyłącznie klienckie: serwer z jednym z nich zgłasza wyjątek, gdy Active zostanie ustawione na True, chyba że OnSSLGetHandler dostarczy własny handler. Zamiast nich użyj iohNativeTLS, iohOpenSSL albo, w systemie Windows, iohSChannel.

Dla silnika natywnego Version to najniższa dozwolona wersja, a nie dokładna wersja, jak w przypadku iohOpenSSL. tlsUndefined (wartość domyślna) i tls1_2 akceptują TLS 1.3 i TLS 1.2, tls1_3 akceptuje wyłącznie TLS 1.3, a tls1_0 lub tls1_1 zgłaszają błąd konfiguracji przy uruchamianiu serwera, ponieważ silnik obsługuje wyłącznie TLS 1.2 i TLS 1.3. Aby akceptować wyłącznie TLS 1.2, należy podać w NativeTLS_Options.CipherSuites tylko zestawy szyfrów TLS 1.2, na przykład TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. Silnik weryfikuje certyfikaty klienta względem certyfikatów głównych z RootCertFile oraz, gdy NativeTLS_Options.UseSystemRoots ma wartość True (domyślnie False), także względem certyfikatów, którym ufa system operacyjny. Z iohNativeTLS, CertFile może być też plikiem .pfx lub .p12 zawierającym certyfikat, łańcuch i klucz, otwieranym za pomocą Password. Silnik wznawia sesje za pomocą biletów sesji TLS 1.3 i TLS 1.2: NativeTLS_Options.SessionTickets (domyślnie True) je włącza, a NativeTLS_Options.TicketLifetime (domyślnie 7200 sekund) ustala, jak długo można używać biletu do wznowienia. Wznowienie w TLS 1.2 wymaga, aby klient obsługiwał rozszerzony sekret główny. Nie przyjmuje danych 0-RTT i nie zgłasza zdarzenia OnSSLVerifyPeer, które należy do handlera OpenSSL. VerifyCertificate żąda od klienta certyfikatu i go weryfikuje, VerifyCertificate_Options.FailIfNoCertificate odrzuca klienta, który żadnego nie przesyła, a VerifyClientOnce nie ma tu znaczenia, ponieważ silnik nigdy nie renegocjuje. Zobacz Natywny TLS.

Przykład


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;

Wróć do Właściwości