Desplegar TLS con sgcWebSockets en Windows siempre ha implicado distribuir libcrypto y libssl junto a tu ejecutable, con la versión y la arquitectura de OpenSSL correctas. Ahora sgcWebSockets puede enlazar OpenSSL directamente dentro del ejecutable, de modo que no hay ninguna DLL que desplegar, ninguna versión que hacer coincidir ni ninguna carpeta donde guardarlas. Está disponible en las ediciones Enterprise y All-Access.
Una unidad, nada más que configurar
No hay directivas de compilador que habilitar ni versión de la API de OpenSSL que elegir. Añade la unidad sgcIdSSLOpenSSL_Static a la cláusula uses de tu proyecto y, desde la siguiente ejecución, tu aplicación usará la biblioteca OpenSSL enlazada en el .exe, tanto para los componentes cliente como servidor.
uses
sgcWebSocket, sgcWebSocket_Classes,
sgcIdSSLOpenSSL_Static;
Elimina la unidad de la cláusula uses y tu aplicación volverá a cargar las DLLs de OpenSSL exactamente como antes. No hay nada más que cambiar en tu código, tus ajustes de TLS, certificados y lógica de conexión permanecen igual en ambos casos.
Funciona en clientes y servidores, Win32 y Win64
El enlace estático se aplica por igual a TsgcWebSocketClient y a TsgcWebSocketServer, y a cualquier otro componente de sgcWebSockets o sgcIndy que use TLS, tanto en compilaciones de 32 bits como de 64 bits. Un servidor que termina TLS para cientos de conexiones y un cliente que se conecta a un único destino obtienen el OpenSSL enlazado de la misma manera, simplemente con tener la unidad en el proyecto.
OpenSSL 3.5.7, siempre actualizado
La versión de OpenSSL enlazada actualmente es la 3.5.7. A medida que salen nuevas versiones de OpenSSL, esta se actualiza en futuras versiones de sgcWebSockets, de modo que no necesitas rastrear, descargar ni redistribuir binarios de OpenSSL por tu cuenta, basta con una actualización normal del componente.
Requisitos
- Solo Windows, 32 y 64 bits. No está disponible en macOS, Android ni iOS, y no forma parte de la edición .NET.
- Delphi XE2 o posterior. Las versiones anteriores de Delphi no pueden enlazar un archivo objeto en este formato, así que en esas versiones la unidad se compila sin generar nada y tu aplicación sigue cargando las DLLs de OpenSSL como de costumbre, sin necesidad de cambiar el código.
- Solo disponible en sgcWebSockets Enterprise y All-Access, y únicamente cuando se usa la biblioteca Indy personalizada, que es la opción predeterminada en estas ediciones.
Si compilas con una versión de Delphi anterior a XE2 y aun así referencias la unidad esperando que se enlace, verás E2045 Bad object file format. La solución es simplemente eliminar sgcIdSSLOpenSSL_Static de la cláusula uses, tu aplicación seguirá funcionando con las DLLs de OpenSSL.
Cuándo ayuda esto
El enlace estático resulta útil cuando quieres distribuir un único archivo, cuando no puedes garantizar que la máquina de destino ya tenga instalada la DLL de OpenSSL correcta, o cuando tu proceso de despliegue no permite archivos adicionales junto al ejecutable, por ejemplo un directorio de instalación restringido o una herramienta distribuida como un solo binario.
Disponibilidad
El enlace estático de OpenSSL se incluye en las ediciones Enterprise y All-Access de sgcWebSockets. Para conocer el panorama completo de los backends de TLS que sgcWebSockets admite en cada plataforma, consulta la sección SSL / TLS y la página del backend TLS de OpenSSL.
Descárgalo desde la página de descarga de sgcWebSockets, u obténlo a través de GetIt o de tu cuenta registrada.
¿Preguntas, comentarios o ayuda para planificar un despliegue sin DLLs? Ponte en contacto, recibirás una respuesta de las personas que escribieron el código.
