TsgcWebSocketServer › Properties › SSLOptions
Przechowuje ścieżki certyfikatów, wybór wersji TLS oraz ustawienia OpenSSL dla nasłuchiwacza TLS.
property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;
Version=tlsUndefined, VerifyCertificate=False
Przed aktywacją serwera, gdy właściwość SSL ma wartość True, należy dostarczyć materiał certyfikatu: RootCertFile, CertFile i KeyFile wskazują pliki PEM (można użyć tej samej ścieżki dla wszystkich trzech, gdy plik zawiera pełny łańcuch), a Password jest wymagane wyłącznie, gdy klucz prywatny jest zaszyfrowany. Należy ustawić VerifyCertificate na True, aby żądać i weryfikować certyfikaty klienta (opcje podrzędne FailIfNoCertificate i VerifyClientOnce precyzują weryfikację), a VerifyDepth steruje długością łańcucha. Version wybiera konkretną wersję TLS (tls1_0, tls1_1, tls1_2, tls1_3) lub pozostawia negocjację otwartą (tlsUndefined). OpenSSL_Options udostępnia niskopoziomowe parametry: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), LibPath/LibPathCustom do lokalizowania plików binarnych OpenSSL, UnixSymLinks, ECDHE, CipherList, CurveList, MinVersion oraz X509Checks do weryfikacji nazwy hosta/adresu IP.
VerifyCertificate nie mówi nic o tym, czy certyfikat klienta został unieważniony od chwili jego wystawienia, więc certyfikat, którego klucz skradziono i którego numer seryjny został od tego czasu unieważniony, nadal otwiera sesję aż do swojego wygaśnięcia. Przy IOHandler=iohSChannel stan unieważnienia certyfikatu klienta jest sprawdzany wyłącznie wtedy, gdy SChannel_Options.Revocation.Check ma wartość inną niż scrcDisabled (wartość domyślna): scrcEndCertificate sprawdza sam certyfikat klienta, scrcChainExcludeRoot sprawdza go wraz z certyfikatami pośrednimi, a scrcChain obejmuje także certyfikat główny. Revocation.Timeout ogranicza całe pobranie list CRL i odpowiedzi OCSP (domyślnie 5000 ms), dzięki czemu nieosiągalny responder nie może zablokować uzgadniania, Revocation.CacheOnly używa wyłącznie tego, co system Windows ma już w pamięci podręcznej, i nigdy nie sięga do sieci, a Revocation.IgnoreRevocationOffline oraz Revocation.IgnoreNoRevocationCheck (obie True) rozstrzygają, czy nieosiągalny responder lub certyfikat klienta niepublikujący żadnych informacji o unieważnieniu jest akceptowany. Certyfikat potwierdzony jako unieważniony jest zawsze odrzucany. Ustawienie Preset := tlspSecureDefaults włącza sprawdzanie jako scrcChainExcludeRoot i zachowuje oba ustawienia łagodnego niepowodzenia, dzięki czemu klient, który wcześniej był dopuszczany, nadal jest dopuszczany. Zobacz Serwer SSL | Unieważnianie certyfikatu klienta w SChannel.
oServer := TsgcWebSocketServer.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.MinVersion := tls1_2;
oServer.SSLOptions.Port := 443;
oServer.Active := true;