Implantar TLS com o sgcWebSockets no Windows sempre significou distribuir as DLLs libcrypto e libssl junto com o seu executável, combinadas com a versão e a arquitetura corretas do OpenSSL. Agora o sgcWebSockets pode vincular o OpenSSL diretamente dentro do executável, eliminando a necessidade de distribuir DLLs, de combinar versões ou de manter uma pasta para elas. O recurso está disponível nas edições Enterprise e All-Access.
Uma unit, nada mais a configurar
Não há diretivas de compilador para habilitar nem versão de API do OpenSSL para escolher. Adicione a unit sgcIdSSLOpenSSL_Static à cláusula uses do seu projeto e, a partir da próxima execução, sua aplicação passa a usar a biblioteca OpenSSL vinculada ao .exe, tanto nos componentes cliente quanto nos de servidor.
uses
sgcWebSocket, sgcWebSocket_Classes,
sgcIdSSLOpenSSL_Static;
Remova a unit da cláusula uses e sua aplicação volta a carregar as DLLs do OpenSSL exatamente como antes. Não há mais nada a alterar no seu código, suas configurações de TLS, certificados e lógica de conexão permanecem as mesmas em ambos os casos.
Funciona em clientes e servidores, Win32 e Win64
A vinculação estática se aplica igualmente ao TsgcWebSocketClient e ao TsgcWebSocketServer, e a qualquer outro componente sgcWebSockets ou sgcIndy que utilize TLS, tanto em builds de 32 bits quanto de 64 bits. Um servidor que finaliza TLS para centenas de conexões e um cliente que se conecta a um único endpoint passam a usar o OpenSSL vinculado da mesma forma, bastando ter a unit incluída no projeto.
OpenSSL 3.5.7, sempre atualizado
A versão do OpenSSL atualmente vinculada é a 3.5.7. À medida que novas versões do OpenSSL forem lançadas, ela será atualizada nas próximas atualizações do sgcWebSockets, então você não precisa acompanhar, baixar ou reimplantar os binários do OpenSSL por conta própria, basta uma atualização normal do componente.
Requisitos
- Somente Windows, 32 bits e 64 bits. Não está disponível no macOS, Android ou iOS, e não faz parte da edição .NET.
- Delphi XE2 ou superior. Versões mais antigas do Delphi não conseguem vincular um arquivo objeto nesse formato, portanto nessas versões a unit é compilada como vazia e sua aplicação continua carregando as DLLs do OpenSSL normalmente, sem necessidade de alterar o código.
- Disponível apenas nas edições Enterprise e All-Access do sgcWebSockets, e somente quando a biblioteca Indy personalizada está em uso, o que é o padrão nessas edições.
Se você compilar com uma versão do Delphi anterior à XE2 e ainda assim referenciar a unit esperando que ela seja vinculada, verá o erro E2045 Bad object file format. A solução é simplesmente remover sgcIdSSLOpenSSL_Static da cláusula uses, sua aplicação continuará funcionando com as DLLs do OpenSSL.
Quando isso ajuda
A vinculação estática é útil quando você deseja distribuir um único arquivo, quando não é possível garantir que a máquina de destino já tenha a DLL correta do OpenSSL instalada, ou quando o processo de implantação não permite arquivos extras junto ao executável, por exemplo um diretório de instalação bloqueado ou uma ferramenta distribuída como um único binário.
Disponibilidade
A vinculação estática do OpenSSL está disponível nas edições Enterprise e All-Access do sgcWebSockets. Para um panorama completo dos backends de TLS que o sgcWebSockets suporta em cada plataforma, consulte a seção SSL / TLS e a página do backend TLS OpenSSL.
Faça o download na página de downloads do sgcWebSockets, ou obtenha-o através do GetIt ou da sua conta registrada.
Dúvidas, feedback ou ajuda para planejar uma implantação sem DLLs? Entre em contato, você receberá uma resposta das pessoas que escreveram o código.
