Po ustaleniu prawidłowej pary kandydatów (obaj węzłowie mogą się połączyć i wymieniać dane), należy zabezpieczyć połączenie. DTLS to protokół kryptograficzny szyfrujący dane w celu zapobieżenia inspekcji lub modyfikacji treści wymienianych informacji.
DTLS wymaga bibliotek OpenSSL (od wersji OpenSSL 1.1+), chyba że RTCOptions.DTLSOptions.IOHandler = iohNativeTLS
Z RTCOptions.DTLSOptions.IOHandler = iohNativeTLS uzgadnianie DTLS i wyprowadzanie kluczy DTLS-SRTP działają na natywnym silniku DTLS 1.2 pakietu sgcCrypto, dzięki czemu WebRTC działa bez OpenSSL. Profile SRTP (SRTP_AEAD_AES_128_GCM, SRTP_AES128_CM_SHA1_80, SRTP_AES128_CM_SHA1_32 i SRTP_AEAD_AES_256_GCM) są negocjowane, a klucze SRTP eksportowane tak samo jak na ścieżce OpenSSL. Zobacz Praca bez OpenSSL.
Konfiguracja DTLS znajduje się we właściwości RTCOptions.DTLSOptions komponentu TsgcRTCPeerConnection. Aby włączyć DTLS, należy ustawić właściwość RTCOptions.DTLS na True. Poniżej przedstawiono główne właściwości:
RootCertFile: ścieżka do magazynu zaufania używanego do weryfikacji drugiej strony, zwykle pliku zawierającego urząd certyfikacji. To samo znaczenie ma ta właściwość w transportach TLS i QUIC. Nie jest to certyfikat tego punktu końcowego, a konfiguracja, która ustawia RootCertFile i KeyFile, pozostawiając puste CertFile, zgłasza błąd przy uruchamianiu połączenia.
CertFile: ścieżka do pliku certyfikatu tego punktu końcowego. Plik może zawierać certyfikat razem z certyfikatami pośrednimi, więc plik z łańcuchem również działa.
KeyFile: ścieżka do pliku klucza certyfikatu.
VerifyCertificate: jeśli łańcuch certyfikatów drugiej strony musi być weryfikowany, należy włączyć tę właściwość. WebRTC uwierzytelnia drugą stronę na podstawie odcisku przenoszonego w SDP, a nie na podstawie łańcucha certyfikatów, więc pozostawienie tej właściwości wyłączonej jest normalną konfiguracją WebRTC i nie ma na nią wpływu weryfikacja łańcucha egzekwowana teraz w transportach DTLS.
VerifyDepth: właściwość całkowita reprezentująca maksymalną liczbę ogniw dozwolonych podczas weryfikacji, czyli maksymalną głębokość łańcucha dopuszczalną przy weryfikacji certyfikatu drugiej strony.
OpenSSL_Options: konfiguracja bibliotek OpenSSL.
APIVersion: umożliwia zdefiniowanie, które API OpenSSL będzie używane. Wyłącznie OpenSSL API 1.1+ obsługuje DTLS.
oslAPI_1_1: używa interfejsu API 1.1 OpenSSL, wymaga niestandardowej biblioteki Indy i umożliwia korzystanie z bibliotek OpenSSL 1.1.1 (z obsługą TLS 1.3).
oslAPI_3_0: korzysta z API OpenSSL 3.0, wymaga naszej niestandardowej biblioteki Indy i umożliwia używanie bibliotek OpenSSL 3.0.0 (z obsługą TLS 1.3).
LibPath: tutaj można skonfigurować lokalizację bibliotek openSSL
oslpNone: jest to wartość domyślna; biblioteki OpenSSL powinny znajdować się w tym samym folderze co plik binarny lub w znanej ścieżce.
oslpDefaultFolder: automatycznie ustawia ścieżkę openSSL, w której powinny znajdować się biblioteki dla wszystkich osobowości IDE.
oslpCustomFolder: jeśli ta opcja jest wybrana, należy zdefiniować pełną ścieżkę we właściwości LibPathCustom.
LibPathCustom: gdy LibPath = oslpCustomFolder, należy podać pełną ścieżkę do folderu, w którym znajdują się biblioteki openSSL.
UnixSymLinks: włącz lub wyłącz ładowanie dowiązań symbolicznych w systemach Unix (domyślnie włączone, z wyjątkiem OSX64):
oslsSymLinksDefault: domyślnie jest włączone, z wyjątkiem platformy OSX64 (po MacOS Monterey próba załadowania biblioteki bez wersji kończy się błędem).
oslsSymLinksLoadFirst: Załaduj dowiązania symboliczne przed próbą załadowania bibliotek wersji.
oslsSymLinksLoad: Ładuj dowiązania symboliczne po próbie załadowania bibliotek wersji.
oslsSymLinksDontLoad: nie ładuj dowiązań symbolicznych.