TsgcUDPCLient › Özellikler › DTLSOptions
DTLS etkinleştirildiğinde uygulanan sertifika, doğrulama ve OpenSSL ayarları.
property DTLSOptions: TsgcUDPDTLSClient_Options read FDTLSOptions write SetDTLSOptions;
—
DTLS handshake'ini yöneten parametreleri gruplar. RootCertFile, karşı tarafı doğrulamak için kullanılan güven deposudur; bu özellik TLS ve QUIC taşımalarında da aynı anlama gelir. CertFile bu istemcinin sertifikasıdır ve sertifikayı ara sertifikalarıyla birlikte tutan bir dosyayı okur; bu nedenle bir zincir dosyası da çalışır. KeyFile, CertFile ile eşleşen özel anahtardır. VerifyCertificate sunucu sertifikası doğrulamasını açıp kapatır ve VerifyDepth sertifika zincirinin uzunluğunu sınırlar. VerifyCertificate True ve RootCertFile boş olduğunda güven çıpası olarak işletim sisteminin sertifika deposu kullanılır. OpenSSL_Options, OpenSSL API sürümünü (oslAPI_1_1 veya oslAPI_3_0) ve OpenSSL kütüphanelerinin yüklendiği klasörü seçer. Bu ayarlar yalnızca DTLS True olduğunda etkili olur ve düz UDP trafiği için göz ardı edilir.
IOHandler (varsayılan iohOpenSSL) DTLS motorunu seçer. iohNativeTLS, el sıkışmayı ve kayıtları sgcCrypto paketinin yerel DTLS 1.2 motoru üzerinde çalıştırır; böylece hiçbir OpenSSL kütüphanesi yüklenmez. Yalnızca ECDHE AEAD şifre paketlerini (AES-128-GCM, AES-256-GCM ve ChaCha20-Poly1305) X25519, P-256 veya P-384 üzerinde ECDSA ya da RSA sertifikalarıyla destekler, Extended Master Secret gerektirir ve oturumları sürdürmez. CertFile ve KeyFile PEM veya DER olabilir. sgcCrypto paketi olmayan bir yapıda iohNativeTLS ile başlatmak hata verir. Başka herhangi bir değer OpenSSL yolunu korur. OnDTLSVerifyPeer, yerel yolda tetiklenmez; çünkü geçirilecek bir OpenSSL sertifika nesnesi yoktur. VerifyCertificate True olduğunda zincir, RootCertFile'a veya sistem köklerine karşı denetlenir ve bu bileşenin arkasındaki DTLS motoru olan TsgcDTLS_Component, bunun yerine OnVerifyPeerNative olayını tetikler; eş zincirini DER olarak (önce yaprak), kararı ve bir var Accept parametresini iletir. Bkz. OpenSSL Olmadan Çalıştırma.
RootCertFile'ın anlamı değişti ve bu bir kırıcı değişikliktir. Daha önce bu uç noktanın sertifikası olarak yükleniyordu; bu da kütüphanenin geri kalanıyla tutarsızdı. RootCertFile içinde bir sertifika, KeyFile içinde bir anahtar belirten ve CertFile'ı boş bırakan bir yapılandırma, bileşen başlatıldığında artık hata verir:
DTLS_error: RootCertFile is the trust store used to verify the other end, not this endpoint's own certificate. Set CertFile to the certificate that goes with KeyFile.
Böyle bir yapılandırmayı güncellemek için sertifika yolunu RootCertFile'dan CertFile'a taşıyın ve RootCertFile'ı, karşı tarafın kendisine karşı doğrulandığı sertifika yetkilisi için ayırın. Hata bilerek ölümcül tutulmuştur. Bu hata olmasaydı istemci, her çalıştırmada farklı bir parmak izine sahip, kendinden imzalı bir sertifikayı sessizce sunardı.
VerifyCertificate artık zorunlu kılınıyor. Daha önce doğrulama sonucu hesaplanıp sonra atılıyordu; bu nedenle doğrulama açıkken, güvenilmeyen bir makam tarafından düzenlenmiş olanlar dahil her sertifika kabul ediliyordu. Doğrulanamayan bir zincir artık handshake'i sonlandırır. VerifyCertificate hâlâ varsayılan olarak False'tur; bu nedenle varsayılan yapılandırma değişmemiştir.
TsgcRTCPeerConnection bundan etkilenmez. WebRTC, karşı tarafın kimliğini bir sertifika zinciriyle değil, SDP içinde taşınan parmak iziyle doğrular ve VerifyCertificate'ı kapalı bırakır. Bu, normal WebRTC yapılandırmasıdır ve tam olarak eskisi gibi çalışmaya devam eder.
oClient.DTLS := True;
oClient.DTLSOptions.CertFile := 'client.pem';
oClient.DTLSOptions.KeyFile := 'client.key';
oClient.DTLSOptions.VerifyCertificate := True;
oClient.DTLSOptions.OpenSSL_Options.APIVersion := oslAPI_3_0;