Backend TLS OpenSSL

OpenSSL (iohOpenSSL) é o transporte TLS multiplataforma do sgcWebSockets. Ele roda em todas as plataformas que a biblioteca atende e é o padrão na maioria delas, com a mais ampla cobertura de protocolos e cifras de qualquer backend. Habilite-o definindo TLSOptions.IOHandler como iohOpenSSL e implante as bibliotecas de runtime do OpenSSL junto com o seu aplicativo.

← Todos os backends TLS

OpenSSL (iohOpenSSL)

TLS multiplataforma implementado sobre o socket do Indy, disponível em todas as plataformas que o sgcWebSockets atende.

OpenSSL é a implementação TLS multiplataforma que o sgcWebSockets coloca sobre o socket do Indy. Está disponível no Windows, Linux, macOS, iOS e Android, e é o backend padrão na maioria deles. Escolha OpenSSL quando precisar de comportamento TLS idêntico em todas as plataformas ou quando depender de um recurso que só o OpenSSL expõe.

O backend cobre TLS 1.0 a TLS 1.3 com a mais ampla seleção de conjuntos de cifras de qualquer transporte do sgcWebSockets. Você pode confiar em uma autoridade privada ou autoassinada com uma raiz de CA personalizada (RootCertFile), apresentar um certificado de cliente para TLS mútuo e anunciar protocolos de aplicação como http/1.1 por meio de ALPN. Como os quatro backends compartilham a mesma API TLSOptions, o código escrito para OpenSSL passa para um backend nativo mudando apenas a linha do IOHandler.

A contrapartida é a implantação. OpenSSL é uma dependência externa, então você envia as bibliotecas de runtime dele com o seu aplicativo e as mantém atualizadas. No Windows isso significa libssl-3.dll e libcrypto-3.dll, no Linux e no Android os arquivos .so correspondentes, e nas plataformas Apple os arquivos .dylib. Se você quiser TLS nativo sem bibliotecas para implantar, veja o SChannel no Windows ou os backends nativos do Android e da Apple.

Habilitar OpenSSL

Defina TLSOptions.IOHandler como iohOpenSSL e implante as bibliotecas OpenSSL com a sua build.

uses
  sgcWebSocket, sgcWebSocket_Types;
// ...
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohOpenSSL;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.RootCertFile := '';   // optional custom CA (PEM/DER)
WSClient.TLSOptions.CertFile := '';       // optional client cert for mTLS
WSClient.TLSOptions.Password := '';
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1');
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
WSClient->TLS = true;
WSClient->TLSOptions->IOHandler = iohOpenSSL;
WSClient->TLSOptions->VerifyCertificate = true;
WSClient->TLSOptions->RootCertFile = "";   // optional custom CA (PEM/DER)
WSClient->TLSOptions->CertFile = "";       // optional client cert for mTLS
WSClient->TLSOptions->Password = "";
WSClient->TLSOptions->ALPNProtocols->Add("http/1.1");
WSClient->Host = "your.server.com";
WSClient->Port = 443;
WSClient->Active = true;

Enviando as bibliotecas OpenSSL

OpenSSL é uma dependência externa, então as bibliotecas de runtime acompanham o seu aplicativo em todas as plataformas.

Windows

Implante libssl-3.dll e libcrypto-3.dll ao lado do seu executável (a build de 32 bits ou 64 bits de acordo com o seu alvo).

Linux & Android

Empacote os arquivos .so de libssl e libcrypto correspondentes e carregue-os de um caminho que o seu aplicativo consiga acessar em tempo de execução.

macOS, iOS

Envie os arquivos .dylib de libssl e libcrypto com o pacote do aplicativo para que o runtime do OpenSSL esteja disponível no dispositivo.

Mantenha-as atualizadas

Como as bibliotecas são suas para implantar, você é responsável por atualizá-las quando uma correção de segurança for lançada.

Observação sobre edições

OpenSSL (iohOpenSSL) está incluído em todas as edições do sgcWebSockets. Consulte a matriz de recursos para o detalhamento completo.

TLS multiplataforma em uma única linha

Baixe a versão de avaliação gratuita e adicione TLS com OpenSSL aos seus aplicativos Delphi e C++Builder.