TsgcWebSocketClient › Właściwości › TLSOptions
Konfiguruje certyfikaty, wersję TLS, ALPN, IOHandler i inne szczegóły bezpiecznego połączenia używane gdy TLS jest włączony.
property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;
Preset=tlspCustom
Dostępne tylko wtedy, gdy TLS ma wartość True. Podwłaściwości obejmują RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version (od tlsUndefined po tls1_3), ALPNProtocols oraz IOHandler (iohOpenSSL, iohSChannel, iohAndroidTLS lub iohAppleTLS). W systemie Android iohAndroidTLS używa natywnego TLS platformy (javax.net.ssl.SSLEngine), a w iOS i macOS iohAppleTLS używa natywnego TLS firmy Apple, dzięki czemu nie trzeba wdrażać żadnych bibliotek OpenSSL; natywny TLS platformy wymaga edycji Enterprise. Ustawienia specyficzne dla OpenSSL znajdują się w OpenSSL_Options, a ustawienia specyficzne dla SChannel w SChannel_Options.
VerifyCertificate kontroluje walidację certyfikatu w ten sam sposób dla każdego IOHandler, w tym iohSChannel: domyślnie ma wartość False, dlatego serwer prezentujący certyfikat samopodpisany, wygasły lub z niezgodną nazwą hosta jest akceptowany bez żadnego ostrzeżenia, dopóki nie zostanie ustawiona wartość True. W przypadku SChannel walidacja jest następnie przeprowadzana w oparciu o magazyn certyfikatów systemu Windows; zdarzenie OnSChannelVerifyPeer pozwala aplikacji sprawdzić łańcuch certyfikatów lub zaakceptować certyfikat, który w innym przypadku zostałby odrzucony.
VerifyCertificate nie mówi nic o tym, czy certyfikat został unieważniony od chwili jego wystawienia, dlatego skradziony klucz, którego certyfikat unieważniono, ale który jeszcze nie wygasł, nadal się uwierzytelnia. W przypadku iohSChannel stan unieważnienia jest sprawdzany tylko wtedy, gdy SChannel_Options.Revocation.Check ma wartość inną niż scrcDisabled (domyślna): scrcEndCertificate sprawdza wyłącznie certyfikat serwera, scrcChainExcludeRoot sprawdza go razem z certyfikatami pośrednimi, a scrcChain obejmuje także certyfikat główny. Revocation.Timeout ogranicza całe pobieranie informacji CRL i OCSP (domyślnie 5000 ms), aby nieosiągalny responder nie mógł 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) decydują, czy nieosiągalny responder lub certyfikat niepublikujący informacji o unieważnieniu są akceptowane. Certyfikat potwierdzony jako unieważniony jest zawsze odrzucany. Zobacz SChannel Certificate Revocation.
Preset stosuje zestaw bezpiecznych ustawień domyślnych w jednym przypisaniu. Przy tlspCustom (domyślnie) każda opcja zachowuje wartość skonfigurowaną ręcznie, zachowując dotychczasowe zachowanie. Ustawienie Preset := tlspSecureDefaults włącza weryfikację certyfikatu (VerifyCertificate := True), podnosi Version do co najmniej TLS 1.2 (gdy skonfigurowana była niższa lub nieokreślona wersja), włącza sprawdzanie nazwy hosta certyfikatu serwera (walidacja nazwy hosta OpenSSL X509Checks) oraz włącza sprawdzanie unieważnienia SChannel jako scrcChainExcludeRoot. Poszczególne opcje można nadal dostosowywać po zastosowaniu presetu.
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;