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.
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, ou continue usando o OpenSSL e vincule-o estaticamente ao seu executável Windows, veja abaixo.
Código
Habilitar OpenSSL
Defina TLSOptions.IOHandler como iohOpenSSL e implante as bibliotecas OpenSSL com a sua build.
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), ou dispense as DLLs por completo vinculando o OpenSSL estaticamente, veja abaixo.
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.
Windows · Enterprise, All-Access
Vincule o OpenSSL diretamente dentro do executável
No Windows, o OpenSSL pode ser vinculado diretamente dentro do seu .exe, em vez de ser carregado a partir de libssl-3.dll e libcrypto-3.dll em tempo de execução.
Adicione a unit sgcIdSSLOpenSSL_Static à cláusula uses do seu projeto e não há mais nada a configurar: nenhuma diretiva de compilador para habilitar, nenhuma versão de API do OpenSSL para escolher. A partir da próxima execução, sua aplicação passa a usar a biblioteca OpenSSL vinculada ao executável, tanto nos componentes cliente quanto nos de servidor, em builds de 32 bits e 64 bits. Remova a unit da cláusula uses e sua aplicação volta a carregar as DLLs do OpenSSL exatamente como antes.
A versão do OpenSSL atualmente vinculada é a 3.5.7, atualizada nas próximas atualizações à medida que novas versões forem lançadas, então você não precisa acompanhar ou reimplantar os binários do OpenSSL por conta própria. A vinculação estática requer o Delphi XE2 ou superior e a biblioteca Indy personalizada (o padrão nessas edições); em versões mais antigas do Delphi, a unit é compilada como vazia e sua aplicação continua carregando as DLLs do OpenSSL normalmente.
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.
A vinculação estática no Windows requer o Delphi XE2 ou superior e está disponível nas edições Enterprise e All-Access.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.