TsgcWebSocketClient › Özellikler › TLSOptions

TLSOptions Özellik

TLS etkinleştirildiğinde kullanılan sertifikaları, TLS sürümünü, ALPN'yi, IOHandler'ı ve diğer güvenli bağlantı ayrıntılarını yapılandırır.

Sözdizimi

property TLSOptions: TsgcWSTLS_Options read FTLSOptions write SetTLSOptions;

Varsayılan Değer

Preset=tlspCustom

Remarks

Yalnızca TLS True olduğunda erişilebilir. Alt özellikler şunları içerir: RootCertFile, CertFile, KeyFile, Password, VerifyCertificate, VerifyDepth, Version (tlsUndefined'dan tls1_3'e kadar), ALPNProtocols ve IOHandler (iohOpenSSL, iohSChannel, iohAndroidTLS, iohAppleTLS veya iohNativeTLS). Android'de iohAndroidTLS platformun yerel TLS'sini (javax.net.ssl.SSLEngine) kullanır ve iOS ile macOS'ta iohAppleTLS Apple yerel TLS'sini kullanır, böylece hiçbir OpenSSL kütüphanesinin dağıtılması gerekmez; yerel platform TLS'si Enterprise sürümünü gerektirir. OpenSSL'e özgü ayarlar OpenSSL_Options altında ve SChannel'a özgü ayarlar SChannel_Options altında bulunur.

VerifyCertificate, iohSChannel dahil olmak üzere her IOHandler için sertifika doğrulamasını aynı şekilde denetler: varsayılan olarak False'dur, bu nedenle kendinden imzalı, süresi dolmuş veya yanlış ana bilgisayar adına sahip bir sertifika sunan bir sunucu, True olarak ayarlanana kadar hiçbir uyarı olmadan kabul edilir. SChannel ile doğrulama, ardından Windows sertifika deposuna göre gerçekleştirilir; OnSChannelVerifyPeer, uygulamanın zinciri incelemesine veya aksi takdirde reddedilecek bir sertifikayı kabul etmesine olanak tanır.

VerifyCertificate, sertifikanın düzenlendiğinden bu yana iptal edilip edilmediği hakkında hiçbir şey söylemez, bu nedenle sertifikası iptal edilmiş ancak henüz süresi dolmamış çalınmış bir anahtar yine de kimlik doğrulamasından geçer. iohSChannel ile iptal durumu yalnızca SChannel_Options.Revocation.Check, scrcDisabled (varsayılan) dışında bir değere ayarlandığında denetlenir: scrcEndCertificate yalnızca sunucu sertifikasını denetler, scrcChainExcludeRoot onu ara sertifikalarla birlikte denetler ve scrcChain kökü de kapsar. Revocation.Timeout, erişilemeyen bir yanıtlayıcının handshake'i askıda bırakamaması için CRL ve OCSP bilgisinin tamamının alınmasını sınırlar (varsayılan 5000 ms), Revocation.CacheOnly yalnızca Windows'un zaten önbelleğe almış olduğunu kullanır ve hiçbir zaman ağa gitmez, Revocation.IgnoreRevocationOffline ve Revocation.IgnoreNoRevocationCheck (her ikisi de True) ise erişilemeyen bir yanıtlayıcının veya hiçbir iptal bilgisi yayımlamayan bir sertifikanın kabul edilip edilmeyeceğine karar verir. İptal edildiği doğrulanan bir sertifika her zaman reddedilir. Bkz. SChannel Certificate Revocation.

Preset, tek bir atamayla bir dizi güvenli varsayılan uygular. tlspCustom (varsayılan) ile her seçenek elle yapılandırdığınız değeri korur ve önceki davranış korunur. Preset := tlspSecureDefaults ayarlandığında sertifika doğrulaması etkinleştirilir (VerifyCertificate := True), Version yalnızca tls1_0 veya tls1_1 olarak ayarlanmışsa TLS 1.2'ye yükseltilir (tlsUndefined olduğu gibi bırakılır, böylece TLS 1.3 kullanılabilir kalır), OpenSSL_Options.VersionMin ve SChannel_Options.VersionMin daha düşük veya tanımsızsa tls1_2'ye ayarlanır, sunucu sertifikasının ana bilgisayar adı denetimi etkinleştirilir (OpenSSL X509Checks ana bilgisayar adı doğrulaması) ve SChannel iptal denetimi scrcChainExcludeRoot olarak etkinleştirilir. Ön ayar uygulandıktan sonra tek tek seçenekler yine de ayarlanabilir.

IOHandler ayrıca sgcCrypto paketinin TLS 1.3 ve TLS 1.2 konuşan saf Object Pascal TLS motoru olan iohNativeTLS değerini de kabul eder. Hiçbir OpenSSL kütüphanesi yüklemez ve TLS 1.3'te RFC 10024'ün hibrit kuantum sonrası anahtar değişimi gruplarını, ilk sırada X25519MLKEM768 olacak şekilde sunar, bu yüzden onu seçen bir istemci, bunu destekleyen herhangi bir sunucuya karşı kuantum sonrası bir anahtar değişimi müzakere eder. İki tercih listesi NativeTLS_Options.Groups ve NativeTLS_Options.CipherSuites'tir; OpenSSL biçiminde iki nokta üst üste ile ayrılırlar ve boş bir liste motorun varsayılanlarını korur.

Yerel motor için Version, iohOpenSSL'de olduğu gibi kesin bir sürüm değil, izin verilen en düşük sürümdür. tlsUndefined (varsayılan) ve tls1_2, TLS 1.3 veya TLS 1.2 müzakere eder, tls1_3 yalnızca TLS 1.3 müzakere eder, ve tls1_0 veya tls1_1, bağlanırken bir yapılandırma hatası verir, çünkü motor yalnızca TLS 1.2 ve TLS 1.3'ü destekler. Yalnızca TLS 1.2 için, NativeTLS_Options.CipherSuites içinde yalnızca TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 gibi TLS 1.2 şifre paketlerini belirtin. Motor, RootCertFile içindeki köklere güvenir, ve NativeTLS_Options.UseSystemRoots (varsayılan False) işletim sisteminin güvendiği kökleri ekler: Windows ROOT sertifika deposu, macOS'ta Security.framework'ün çapa sertifikaları (yedek olarak /etc/ssl/cert.pem ile), iOS'ta eş zincirinin Security.framework tarafından bir değerlendirmesi, Android'de Conscrypt veya /system/etc/security/cacerts klasörü, ve Linux'ta /etc/ssl/certs/ca-certificates.crt ile başlayarak altı standart konum arasında bulunan ilk CA paket dosyası. Hiçbir sistem kökü bulunamadığında, VerifyCertificate := True bir kök dosyasına ihtiyaç duyar. CertFile, Password ile açılan bir .pfx veya .p12 dosyası da olabilir. Motor, oturumları TLS 1.3 ve TLS 1.2 oturum biletleriyle sürdürür; bunlar bileşenin bir oturum önbelleğinde tutulur, böylece bir yeniden bağlanma tam el sıkışmayı atlar. NativeTLS_Options.SessionTickets (varsayılan True) bunu açar, ve TLS 1.2 sürdürmesi sunucunun genişletilmiş ana sırrı desteklemesini gerektirir. 0-RTT verisi göndermez ve OpenSSL işleyicisine ait olan OnSSLVerifyPeer olayını tetiklemez. Sertifikanın taşıması gereken adı sabitlemek için, yerel motorun da okuduğu OpenSSL_Options.X509Checks.HostName veya IPAddress değerini ayarlayın. Bkz. Native TLS.

Örnek


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;

Özelliklere Dön