Backends SSL / TLS

sgcWebSockets incluye cinco transportes TLS intercambiables tras una sola propiedad, TLSOptions.IOHandler. Elige OpenSSL para la máxima portabilidad, un backend nativo de la plataforma (Windows SChannel, Android, iOS/macOS) que usa la propia pila TLS del sistema operativo sin ninguna librería OpenSSL que desplegar, o el motor Native TLS, una pila TLS 1.3 y TLS 1.2 escrita en Object Pascal que no arrastra ninguna dependencia en ningún destino y que negocia por defecto el intercambio de claves poscuántico X25519MLKEM768. En Windows, el propio OpenSSL también puede enlazarse de forma estática en tu ejecutable, de modo que sigues con OpenSSL sin nada que desplegar tampoco. Cambiar de backend es una línea de código, nada más cambia.

Cinco transportes TLS, una sola propiedad

Cada backend se conecta a la misma API TLSOptions. Elige el que encaje con tu plataforma y despliegue, y luego configura TLSOptions.IOHandler.

Comparativa de backends

Plataformas, huella de despliegue, soporte de TLS 1.3 y edición para cada transporte.

Backend Plataformas Librería que desplegar TLS 1.3 Edición
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, o ninguna en Windows (enlazado estático) Sí Todas las ediciones
SChannel Windows Ninguna (integrado en Windows) Sí (Windows 11/Server 2022+) Professional, Enterprise
TLS de Android Android Ninguna (usa el SO) Sí Enterprise
TLS de Apple iOS, macOS Ninguna (usa el SO) Sí (10.14+/iOS 12+) Enterprise
Native TLS Windows, Linux, macOS, iOS, Android Ninguna (Object Pascal puro) Sí (y TLS 1.2) Standard, Professional, Enterprise o el paquete sgcCrypto

Elige un backend

Cada transporte tiene su propia página con la configuración completa, código para Delphi y C++Builder, notas de despliegue y detalles de edición.

OpenSSL (iohOpenSSL)

TLS multiplataforma sobre el socket de Indy, disponible en todas las plataformas a las que apunta sgcWebSockets y el backend por defecto en la mayoría. TLS 1.0 a 1.3 completo, la cobertura de cifrados más amplia, CA personalizada, certificados de cliente y ALPN. Despliegas las librerías de runtime de OpenSSL junto con tu aplicación. Incluido en todas las ediciones. En Windows, también puede enlazarse de forma estática en el ejecutable en su lugar, sin nada que desplegar.

Leer la guía completa →

SChannel (iohSChannel)

La pila TLS nativa de Microsoft (Secure Channel / SSPI), integrada en Windows. Cero despliegue de librerías, sin DLLs de OpenSSL que enviar o parchear, y usa el almacén de certificados de Windows. Solo Windows. Incluido en las ediciones Professional y Enterprise.

Leer la guía completa →

TLS nativo de Android (iohAndroidTLS)

TLS nativo de Android usando el SSLEngine de la plataforma a través de JNI. Sin .so de OpenSSL en tu APK, validación contra el almacén de confianza del sistema Android, TLS 1.3 y ALPN en Android 10 (API 29) y posteriores. Edición Enterprise.

Leer la guía completa →

TLS nativo de Apple (iohAppleTLS)

TLS nativo de Apple para iOS y macOS, sin ningún .dylib de OpenSSL que desplegar. Selecciona automáticamente Network.framework (TLS 1.3) en macOS 10.14+ / iOS 12+ y recurre a Secure Transport (TLS 1.2) en sistemas más antiguos, con confianza del sistema, SNI, CA personalizada, certificado de cliente / mTLS y ALPN. Edición Enterprise.

Leer la guía completa →

Native TLS (iohNativeTLS)

Una implementación de TLS 1.3 y TLS 1.2 escrita íntegramente en Object Pascal sobre las unidades de sgcCrypto, así que no despliega absolutamente nada, ni en Windows, ni en Linux, ni en macOS, iOS o Android. Establece TLSOptions.IOHandler := iohNativeTLS en un cliente, o SSLOptions.IOHandler := iohNativeTLS en un servidor, incluidos los motores de servidor IOCP y EPOLL. TLSOptions.NativeTLS_Options.Groups y TLSOptions.NativeTLS_Options.CipherSuites aceptan listas separadas por dos puntos, al estilo de OpenSSL. Por defecto valen X25519MLKEM768:X25519:secp256r1:secp384r1 y TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 más los valores por defecto de TLS 1.2, así que un handshake contra un par que lo admita es híbrido poscuántico sin ninguna configuración.

TLS 1.3 y TLS 1.2. TLSOptions.Version en un cliente, y SSLOptions.Version en un servidor, es la versión mínima permitida: tls1_2 o tlsUndefined negocia TLS 1.3 o TLS 1.2, y tls1_3 permite solo TLS 1.3. Para usar solo TLS 1.2, incluye en NativeTLS_Options.CipherSuites únicamente conjuntos de cifrado de TLS 1.2. TLS 1.2 ofrece por defecto ECDHE_ECDSA y ECDHE_RSA con AES-128-GCM, AES-256-GCM y ChaCha20-Poly1305, mientras que los conjuntos ECDHE AES-CBC y el intercambio de claves RSA solo aparecen si los nombras. Usa X25519, secp256r1 o secp384r1, porque los grupos híbridos poscuánticos solo existen en TLS 1.3. TLS 1.2 incorpora el extended master secret de la RFC 7627 y la protección contra downgrade de la RFC 8446 en ambos lados, y rechaza la renegociación y las firmas SHA-1.

Lo que no hace. El motor solo habla TLS 1.3 y TLS 1.2, sin TLS 1.1, TLS 1.0 ni SSL. No hay reanudación de sesión ni PSK, ni 0-RTT, ni QUIC. Las raíces de confianza vienen de TLSOptions.RootCertFile, más las raíces en las que confía el sistema operativo cuando NativeTLS_Options.UseSystemRoots es True, leídas del almacén ROOT de Windows o de un archivo de paquete CA, y nunca del llavero de macOS o iOS ni del almacén de Android, y el evento de componente OnSSLVerifyPeer no está disponible para él, el motor tiene sus propios puntos de enganche de verificación. Sigue con OpenSSL o con un backend de plataforma cuando necesites alguna de esas cosas.

Forma parte de sgcCrypto, así que se entrega desde la edición Standard en adelante y en el paquete independiente sgcCrypto.

Nota sobre ediciones

El TLS nativo de la plataforma, Android (iohAndroidTLS) y Apple (iohAppleTLS), requiere la edición Enterprise. OpenSSL (iohOpenSSL) está incluido en todas las ediciones; SChannel (iohSChannel) está incluido en las ediciones Professional y Enterprise. El enlazado estático de OpenSSL en Windows también requiere Enterprise o All-Access. Native TLS (iohNativeTLS) forma parte de sgcCrypto, así que se entrega desde la edición Standard en adelante y en el paquete independiente sgcCrypto.

Cambia con una sola línea

Los cinco backends comparten la misma API TLSOptions, así que moverse entre ellos es un único cambio de propiedad. Nada más en tu código tiene que cambiar.

TLS y VerifyCertificate

Activa TLS y alterna la verificación del certificado del par de la misma forma en todos los backends.

RootCertFile

Apunta a una raíz CA personalizada para confiar en una autoridad de certificación privada o autofirmada.

CertFile y Password

Proporciona un certificado de cliente y su contraseña para la autenticación TLS mutua (mTLS).

ALPNProtocols

Anuncia protocolos de aplicación (por ejemplo http/1.1) durante el handshake TLS.

// Same TLSOptions, only the IOHandler line changes per platform.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';
WSClient.TLSOptions.CertFile := '';
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Active := True;
// Same TLSOptions, only the IOHandler line changes per platform.
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;   // or iohSChannel / iohAndroidTLS / iohAppleTLS / iohNativeTLS
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";
WSClient->TLSOptions->CertFile = "";
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Active = true;
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

TLS nativo, cero OpenSSL que desplegar

Descarga la prueba gratuita y cambia de backend TLS con una sola línea de código.