Una vez que existe un par de candidatos válido (ambos pares pueden conectarse e intercambiar datos entre ellos), es momento de hacer la conexión segura. DTLS es un protocolo criptográfico que cifra los datos para evitar la inspección o modificación del contenido de los datos intercambiados.
DTLS requiere las bibliotecas openSSL (desde openSSL 1.1+)
La configuración de DTLS se encuentra en la propiedad RTCOptions.DTLSOptions de TsgcRTCPeerConnection. Para habilitar DTLS, establezca la propiedad RTCOptions.DTLS en True. A continuación se muestran las propiedades principales:
RootCertFile: ruta al almacén de confianza utilizado para verificar al otro extremo, normalmente un archivo que contiene la autoridad de certificación. Este es el mismo significado que tiene la propiedad en los transportes TLS y QUIC. No es el certificado de este extremo, y una configuración que establece RootCertFile y KeyFile dejando CertFile vacío genera un error al iniciarse la conexión.
CertFile: ruta al archivo de certificado de este extremo. El archivo puede contener el certificado junto con sus intermedios, por lo que un archivo de cadena funciona.
KeyFile: ruta al archivo de clave del certificado.
VerifyCertificate: si se debe verificar la cadena de certificados del otro extremo, habilite esta propiedad. WebRTC autentica al otro extremo mediante la huella digital transportada en el SDP y no mediante una cadena de certificados, por lo que dejar esta propiedad deshabilitada es la configuración WebRTC habitual, y no se ve afectada por la verificación de cadena que ahora se aplica en los transportes DTLS.
VerifyDepth: es una propiedad Integer que representa el número máximo de enlaces permitidos durante la verificación, es decir, la profundidad máxima de cadena admitida al verificar el certificado del otro extremo.
OpenSSL_Options: configuración de las bibliotecas OpenSSL.
APIVersion: permite definir qué API de OpenSSL se utilizará. Solo OpenSSL API 1.1+ es compatible con DTLS.
oslAPI_1_1: utiliza la API 1.1 de OpenSSL, requiere nuestra biblioteca Indy personalizada y permite usar las bibliotecas OpenSSL 1.1.1 (con soporte para TLS 1.3).
oslAPI_3_0: usa la API 3.0 de OpenSSL, requiere nuestra biblioteca Indy personalizada y permite usar las bibliotecas OpenSSL 3.0.0 (con soporte TLS 1.3).
LibPath: aquí puede configurar dónde se encuentran las bibliotecas openSSL
oslpNone: es el valor predeterminado; las bibliotecas openSSL deben estar en la misma carpeta donde se encuentra el binario o en una ruta conocida.
oslpDefaultFolder: establece automáticamente la ruta de openSSL donde deben ubicarse las bibliotecas para todas las personalidades del IDE.
oslpCustomFolder: si esta es la opción seleccionada, defina la ruta completa en la propiedad LibPathCustom.
LibPathCustom: cuando LibPath = oslpCustomFolder, defina aquí la ruta completa donde se encuentran las bibliotecas openSSL.
UnixSymLinks: habilita o deshabilita la carga de SymLinks en sistemas Unix (por defecto está habilitado, excepto en OSX64):
oslsSymLinksDefault: están habilitados por defecto excepto en OSX64 (tras MacOS Monterey, falla al intentar cargar la biblioteca sin versión.).
oslsSymLinksLoadFirst: Cargar los SymLinks antes de intentar cargar las bibliotecas de versión.
oslsSymLinksLoad: Cargar SymLinks después de intentar cargar las bibliotecas de versión.
oslsSymLinksDontLoad: no carga los SymLinks.