Backends de SSL / TLS

O sgcWebSockets vem com cinco transportes TLS intercambiáveis por trás de uma única propriedade, TLSOptions.IOHandler. Escolha OpenSSL para máxima portabilidade, um backend nativo da plataforma (Windows SChannel, Android, iOS/macOS) que usa a própria pilha TLS do sistema operacional, sem bibliotecas OpenSSL para implantar, ou o mecanismo Native TLS, uma pilha TLS 1.3 e TLS 1.2 escrita em Object Pascal que não carrega nenhuma dependência em nenhum alvo e negocia por padrão a troca de chaves pós-quântica X25519MLKEM768. No Windows, o próprio OpenSSL também pode ser vinculado estaticamente ao seu executável, então você continua usando o OpenSSL sem nada para implantar. Trocar de backend é uma única linha de código, nada mais muda.

Cinco transportes TLS, uma única propriedade

Todos os backends se conectam à mesma API TLSOptions. Escolha o que se encaixa na sua plataforma e na sua implantação e defina TLSOptions.IOHandler.

Comparativo de backends

Plataformas, tamanho da implantação, suporte a TLS 1.3 e edição de cada transporte.

Backend Plataformas Biblioteca a implantar TLS 1.3 Edição
OpenSSL Windows, Linux, macOS, iOS, Android libssl/libcrypto, ou nenhuma no Windows (vinculação estática) Sim Todas as edições
SChannel Windows Nenhuma (integrado ao Windows) Sim (Windows 11/Server 2022+) Professional, Enterprise
Android TLS Android Nenhuma (usa o sistema operacional) Sim Enterprise
Apple TLS iOS, macOS Nenhuma (usa o sistema operacional) Sim (10.14+/iOS 12+) Enterprise
Native TLS Windows, Linux, macOS, iOS, Android Nenhuma (Object Pascal puro) Sim (e TLS 1.2) Standard, Professional, Enterprise ou o pacote sgcCrypto

Escolha um backend

Cada transporte tem sua própria página com a configuração completa, código para Delphi e C++Builder, notas de implantação e detalhes de edição.

OpenSSL (iohOpenSSL)

TLS multiplataforma sobre o socket do Indy, disponível em todas as plataformas que o sgcWebSockets atende e o padrão na maioria delas. TLS 1.0 a 1.3 completo, a mais ampla cobertura de cifras, CA personalizada, certificados de cliente e ALPN. Você implanta as bibliotecas de runtime do OpenSSL junto com o seu aplicativo. Vem em todas as edições. No Windows, ele também pode ser vinculado estaticamente ao executável, sem nada para implantar.

Ler o guia completo →

SChannel (iohSChannel)

A pilha TLS nativa da Microsoft (Secure Channel / SSPI), integrada ao Windows. Zero implantação de bibliotecas, nenhuma DLL do OpenSSL para enviar ou atualizar, e usa o repositório de certificados do Windows. Apenas no Windows. Vem nas edições Professional e Enterprise.

Ler o guia completo →

TLS nativo do Android (iohAndroidTLS)

TLS nativo do Android usando o SSLEngine da plataforma via JNI. Nenhum .so do OpenSSL no seu APK, validação contra o repositório de confiança do sistema Android, TLS 1.3 e ALPN no Android 10 (API 29) e posterior. Edição Enterprise.

Ler o guia completo →

TLS nativo da Apple (iohAppleTLS)

TLS nativo da Apple para iOS e macOS, sem nenhum .dylib do OpenSSL para implantar. Ele seleciona automaticamente o Network.framework (TLS 1.3) no macOS 10.14+ / iOS 12+ e recorre ao Secure Transport (TLS 1.2) em sistemas mais antigos, com confiança do sistema, SNI, CA personalizada, certificado de cliente / mTLS e ALPN. Edição Enterprise.

Ler o guia completo →

Native TLS (iohNativeTLS)

Uma implementação de TLS 1.3 e TLS 1.2 escrita inteiramente em Object Pascal sobre as unidades do sgcCrypto, de modo que não há absolutamente nada para implantar, no Windows, Linux, macOS, iOS ou Android. Defina TLSOptions.IOHandler := iohNativeTLS em um cliente, ou SSLOptions.IOHandler := iohNativeTLS em um servidor, incluindo os mecanismos de servidor IOCP e EPOLL. TLSOptions.NativeTLS_Options.Groups e TLSOptions.NativeTLS_Options.CipherSuites recebem listas separadas por dois-pontos, no estilo do OpenSSL. Os padrões são X25519MLKEM768:X25519:secp256r1:secp384r1 e TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256 mais os padrões de TLS 1.2, então um handshake contra um par que o suporte já é híbrido pós-quântico sem nenhuma configuração.

TLS 1.3 e TLS 1.2. TLSOptions.Version em um cliente, e SSLOptions.Version em um servidor, é a versão mínima permitida: tls1_2 ou tlsUndefined negocia TLS 1.3 ou TLS 1.2, e tls1_3 permite apenas TLS 1.3. Para usar somente TLS 1.2, liste apenas as suítes de TLS 1.2 em NativeTLS_Options.CipherSuites. O TLS 1.2 oferece ECDHE_ECDSA e ECDHE_RSA com AES-128-GCM, AES-256-GCM e ChaCha20-Poly1305 por padrão, enquanto as suítes ECDHE AES-CBC e a troca de chaves RSA só entram quando você as nomeia. Ele usa X25519, secp256r1 ou secp384r1, porque os grupos híbridos pós-quânticos existem apenas na TLS 1.3. O TLS 1.2 vem com o extended master secret da RFC 7627 e a proteção contra downgrade da RFC 8446 nos dois lados, e recusa renegociação e assinaturas SHA-1.

O que ele não faz. O mecanismo fala apenas TLS 1.3 e TLS 1.2, sem TLS 1.1, TLS 1.0 ou SSL. Não há retomada de sessão nem PSK, nem 0-RTT, nem QUIC. As raízes confiáveis vêm de TLSOptions.RootCertFile, além das raízes em que o sistema operacional confia quando NativeTLS_Options.UseSystemRoots é True, lidas do repositório ROOT do Windows ou de um arquivo de pacote de CAs, e nunca do chaveiro do macOS ou do iOS nem do repositório do Android, e o evento de componente OnSSLVerifyPeer não está disponível para ele, o mecanismo tem seus próprios ganchos de verificação. Continue no OpenSSL ou em um backend da plataforma quando precisar de algum desses recursos.

Ele faz parte do sgcCrypto, então vem da edição Standard em diante e também no pacote sgcCrypto separado.

Observação sobre edições

O TLS nativo da plataforma, Android (iohAndroidTLS) e Apple (iohAppleTLS), requer a edição Enterprise. OpenSSL (iohOpenSSL) está incluído em todas as edições; SChannel (iohSChannel) está incluído nas edições Professional e Enterprise. A vinculação estática do OpenSSL no Windows também requer Enterprise ou All-Access. O Native TLS (iohNativeTLS) faz parte do sgcCrypto, então vem da edição Standard em diante e também no pacote sgcCrypto separado.

Troque com uma única linha

Todos os cinco backends compartilham a mesma API TLSOptions, então alternar entre eles é uma única mudança de propriedade. Nada mais no seu código precisa mudar.

TLS & VerifyCertificate

Ative o TLS e alterne a verificação de certificado do par da mesma forma em todos os backends.

RootCertFile

Aponte para uma raiz de CA personalizada para confiar em uma autoridade certificadora privada ou autoassinada.

CertFile & Password

Forneça um certificado de cliente e sua senha para autenticação TLS mútua (mTLS).

ALPNProtocols

Anuncie protocolos de aplicação (por exemplo, http/1.1) durante o 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;
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

TLS nativo, zero OpenSSL para implantar

Baixe a versão de avaliação gratuita e troque de backend TLS com uma única linha de código.