TsgcWebSocketProxyServer › Özellikler › SSLOptions

SSLOptions Özellik

Aşağı akış TLS dinleyicisi için sertifika yollarını, TLS sürüm seçimini ve OpenSSL ayarlamasını tutar.

Sözdizimi

property SSLOptions: TsgcWSSSL_Options read FSSLOptions write SetSSLOptions;

Varsayılan Değer

Version=tlsUndefined, VerifyCertificate=False

Remarks

SSL True olduğunda proxy'yi etkinleştirmeden önce sertifika materyalini sağlayın: RootCertFile, CertFile ve KeyFile PEM dosyalarına işaret eder (dosya tam zinciri içerdiğinde üçü için de aynı yolu kullanın) ve Password yalnızca özel anahtar şifrelenmişse gereklidir. İstemci sertifikalarını istemek ve doğrulamak için VerifyCertificate değerini True olarak ayarlayın (alt seçenekler FailIfNoCertificate ve VerifyClientOnce denetimi daraltır), VerifyDepth zincir uzunluğunu denetler. Version belirli bir TLS sürümü seçer (tls1_0, tls1_1, tls1_2, tls1_3) veya müzakereyi açık bırakır (tlsUndefined). iohNativeTLS ile bu, izin verilen en düşük sürümdür, aşağıya bakın. OpenSSL_Options düşük düzeyli ayarları sunar: APIVersion (oslAPI_1_0/oslAPI_1_1/oslAPI_3_0), OpenSSL ikili dosyalarını bulmak için LibPath/LibPathCustom, UnixSymLinks, ECDHE, CipherList, CurveList, VersionMin ve ana bilgisayar adı/IP doğrulaması için X509Checks. Bu ayarlar yalnızca aşağı yöndeki (downstream) bacağa uygulanır; yukarı yöndeki (upstream) TLS bacağı Proxy.TLS aracılığıyla etkinleştirilir.

IOHandler, TLS motorunu seçer. iohOpenSSL varsayılandır ve iohSChannel Windows sağlayıcısını kullanır. iohNativeTLS, sgcCrypto paketinin TLS 1.3 ve TLS 1.2 konuşan saf Object Pascal TLS motorunu seçer: hiçbir OpenSSL kütüphanesi yüklenmez ve TLS 1.3'te RFC 10024'ün hibrit kuantum sonrası anahtar değişimi grupları, ilk sırada X25519MLKEM768 olacak şekilde sunulur. İ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. Motor, klasik bağlantı başına iş parçacığı motorunda ve IOCP ile EPOLL motorlarında aynı şekilde çalışır. iohAppleTLS ve iohAndroidTLS yalnızca istemci içindir: OnSSLGetHandler kendi işleyicisini sağlamadıkça, bunlardan biriyle bir sunucuda Active True yapıldığında bir istisna oluşur. Bunun yerine iohNativeTLS, iohOpenSSL veya, Windows'ta, iohSChannel kullanın.

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 ve TLS 1.2'yi kabul eder, tls1_3 yalnızca TLS 1.3'ü kabul eder, ve tls1_0 veya tls1_1, sunucu başlatıldığında bir yapılandırma hatası verir, çünkü motor yalnızca TLS 1.2 ve TLS 1.3'ü destekler. Yalnızca TLS 1.2'yi kabul etmek 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, istemci sertifikalarını RootCertFile içindeki köklere karşı doğrular; NativeTLS_Options.UseSystemRoots True olduğunda (varsayılan False'tur) işletim sisteminin güvendiği kökler de eklenir. iohNativeTLS ile CertFile, sertifikayı, zinciri ve anahtarı taşıyan bir .pfx veya .p12 dosyası da olabilir, Password ile açılır. Motor, oturumları TLS 1.3 ve TLS 1.2 oturum biletleriyle sürdürür: NativeTLS_Options.SessionTickets (varsayılan True) bunu açar ve NativeTLS_Options.TicketLifetime (varsayılan 7200 saniye) bir biletin ne kadar süre kullanılabileceğini belirler. TLS 1.2 sürdürmesi, istemcinin genişletilmiş ana sırrı desteklemesini gerektirir. 0-RTT kabul etmez ve OpenSSL işleyicisine ait olan OnSSLVerifyPeer olayını tetiklemez. VerifyCertificate istemciden bir sertifika ister ve onu doğrular, VerifyCertificate_Options.FailIfNoCertificate hiç sertifika göndermeyen bir istemciyi reddeder, ve VerifyClientOnce hiçbir etki yapmaz çünkü motor asla yeniden müzakere etmez. Bkz. Native TLS.

Örnek


oProxy := TsgcWebSocketProxyServer.Create(nil);
oProxy.SSL := true;
oProxy.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oProxy.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oProxy.SSLOptions.RootCertFile := 'c:\certificates\mycert.pem';
oProxy.SSLOptions.Version := tls1_3;
oProxy.SSLOptions.OpenSSL_Options.VersionMin := tls1_2;
oProxy.SSLOptions.Port := 443;
oProxy.Proxy.Host := 'upstream.example.com';
oProxy.Proxy.Port := 8080;
oProxy.Active := true;

Özelliklere Dön