sgcCustomIndy TLS 1.3. HTTP/2 con ALPN. Nada que desinstalar.

La librería Indy estándar no admite ALPN, y tampoco admite TLS 1.3 a través de OpenSSL 1.1.1 o 3.x. sgcWebSockets Enterprise incluye una compilación personalizada de Indy que sí lo hace. sgcCustomIndy lleva esa misma compilación a sgcWebSockets Core, instalada junto al Indy que ya está en tu IDE.

  • ALPN y HTTP/2
  • TLS 1.3
  • OpenSSL 1.1.1 y 3.x
  • OpenSSL estático
  • Delphi 7 a 13
  • C++ Builder
INDY ESTÁNDAR IdGlobal.pas IdTCPClient.pas IdSSLOpenSSL.pas ya está en tu IDE, sigue instalado INDY PERSONALIZADO sgcIdGlobal.pas sgcIdTCPClient.pas sgcIdSSLOpenSSL.pas añadido por el pack, ningún nombre colisiona HANDSHAKE TLS 1.3 CON ALPN Cliente Servidor ClientHello, ALPN [h2, http/1.1] ServerHello, ALPN h2 flujos HTTP/2 en una conexión
  • 0Librerías Indy que desinstalar
  • 0Instalaciones de Indy 10 en Delphi 7
  • 3Capacidades que le faltan al Indy estándar
  • 1Unidad para OpenSSL estático
  • 2Destinos de enlazado estático, Windows de 32 y 64 bits
Qué desbloquea

Tres cosas que la librería Indy estándar no puede hacer.

Cada punto de aquí abajo es una capacidad de la propia capa Indy, no de un componente que se apoya encima. Por eso cambiar la librería Indy es lo que los activa.

CLIENTHELLO ALPN ofrece h2 http/1.1 El servidor elige h2 flujo 1 flujo 3 flujo 5 flujos HTTP/2 Se negocia dentro del handshake TLS, por debajo de cualquier componente HTTP.
ALPN

La extensión sobre la que se construye HTTP/2.

  • El cliente anuncia los protocolos que sabe hablar y el servidor elige uno, durante el handshake TLS.
  • Esa negociación ocurre dentro de la capa TLS, por debajo de todo lo que un componente HTTP puede alcanzar.
  • La librería Indy estándar no la admite. La librería Indy personalizada hace disponibles ALPN y, con ella, HTTP/2.
INDY ESTÁNDAR TLS 1.3 limitado por la API antigua de OpenSSL INDY PERSONALIZADO TLS 1.3 OpenSSL 1.1.1 OpenSSL 3.x Clientes y servidores llegan a los extremos que exigen TLS 1.3.
TLS 1.3, OpenSSL 1.1.1 y 3.x

Las ramas modernas de OpenSSL, por fin al alcance.

  • TLS 1.3 necesita OpenSSL 1.1.1 u OpenSSL 3.0.0, y la librería Indy estándar no admite esas ramas.
  • La librería Indy personalizada sí, así que un cliente o un servidor construido sobre ella negocia TLS 1.3 con los extremos que lo exigen.
  • Ya sin el límite de lo que ofrece la API antigua de OpenSSL.
TRES ARCHIVOS QUE DESPLEGAR app.exe libssl libcrypto UN SOLO ARCHIVO QUE DESPLEGAR app.exe OpenSSL enlazado dentro uses sgcIdSSLOpenSSL_Static; Windows de 32 y 64 bits, Delphi XE2 o superior.
OpenSSL estático

OpenSSL dentro del ejecutable.

  • OpenSSL se enlaza directamente dentro de tu aplicación en lugar de cargarse en tiempo de ejecución desde las DLL libcrypto y libssl.
  • Una aplicación con TLS se despliega como un único archivo, tanto para componentes cliente como servidor.
  • Solo surte efecto cuando se usa la librería Indy personalizada, en Windows de 32 y 64 bits con Delphi XE2 o superior.
Convivencia

Se instala junto al Indy que ya tienes.

Sustituir la librería Indy de un IDE es la parte que nadie quiere hacer, así que este pack no la pide. Los archivos del Indy personalizado llevan el prefijo sgc, IdGlobal pasa a ser sgcIdGlobal, y las dos versiones conviven sin problemas.

Nada que desinstalar

El Indy que tenga ya tu IDE sigue instalado y registrado. No hay ningún paso en el que quitar un paquete, restaurarlo después o mantener dos perfiles de IDE.

Los proyectos existentes no se tocan

Todo lo que ya compilas contra la librería Indy estándar sigue compilando contra ella, con exactamente las mismas unidades. La compilación personalizada es un añadido, no un reemplazo.

Un solo define de compilación

El uso de la librería Indy personalizada se controla con SGC_CUSTOM_INDY en sgcVer.inc. Volver a desactivar la compilación personalizada es un cambio de una línea.

Código fuente completo, como siempre

Las unidades de Indy renombradas se entregan como código fuente con la licencia, así que compilan con la configuración de tu proyecto y se depuran paso a paso como el resto de la librería.

Sin instalar Indy 10 en Delphi 7

Delphi 7 incluye un Indy más antiguo. Con la librería Indy personalizada incluida, no hay que buscar Indy 10, instalarlo en el IDE ni mantenerlo alineado con los componentes.

La compilación que usa Enterprise

La librería Indy personalizada no es nueva. Es la base sobre la que se ha construido sgcWebSockets Enterprise, y este pack es el camino para llegar a ella desde sgcWebSockets Core.

El código

Una unidad, un archivo que desplegar.

No hay nada que configurar. Añade sgcIdSSLOpenSSL_Static a la cláusula uses, por ejemplo en el .dprprincipal, y la aplicación usa el OpenSSL enlazado en el ejecutable la próxima vez que se ejecute.

Project1.dpr

uses
  sgcIdSSLOpenSSL_Static;

// That is the whole configuration. No compiler
// directive to enable, no OpenSSL API version to
// choose. Remove the unit again and the application
// goes back to loading the OpenSSL DLLs.

sgcVer.inc, en la carpeta de código fuente

{$DEFINE SGC_CUSTOM_INDY}

// One define controls the custom Indy library.
// Static OpenSSL linking has no effect without it,
// and turning the custom build off again is a
// one line change.

En una versión o plataforma donde el enlazado estático no está disponible, no se rompe nada. La aplicación sigue cargando las DLL de OpenSSL como antes, así que el mismo código compila en todas partes. Dónde se aplica el enlazado estático

Plataformas

Donde se puede enlazar un archivo objeto con este formato.

  • Windows de 32 bits
  • Windows de 64 bits

Compilador

Las versiones anteriores informan de un formato de archivo objeto incorrecto, así que el enlazado estático empieza en Delphi XE2.

  • Delphi XE2 y posteriores

Requisito previo

El enlazado estático no tiene efecto si no se usa la librería Indy personalizada.

  • SGC_CUSTOM_INDY definido
Parte de sgcWebSockets

Un add-on, no un pedido aparte.

sgcCustomIndy se asocia a una licencia de sgcWebSockets Core. Se ofrece como el primer add-on recomendado dentro de un pedido de Core, así que lo añades con un clic mientras pides sgcAI, sgcMQ o sgcSocial, y llega en la misma licencia.

Core con sgcCustomIndy

La misma compilación personalizada que usa Enterprise, añadida durante un pedido de Core. Código fuente completo y 1 año de actualizaciones.

€149 / desarrollador

Incluido con sgcAuth y sgcHTTP

La compatibilidad con WebAuthn de sgcAuth y los clientes HTTP/2 y gRPC de sgcHTTP lo necesitan, así que pedir cualquiera de los dos packs siempre incluye sgcCustomIndy. El precio indicado del pack ya lo cubre.

Ya incluido en Enterprise y All-Access

La librería Indy personalizada forma parte de sgcWebSockets Enterprise y de eSeGeCe All-Access, donde viene activada por defecto. Si tienes cualquiera de las dos, no hay nada que añadir. Standard y Professional usan la librería Indy estándar.

No es lo mismo que sgcIndy, el paquete Indy completo que instalas en lugar del Indy de tu IDE. Qué edición necesitas

Ver precios

Pon al día la capa Indy.

ALPN y HTTP/2, TLS 1.3 sobre OpenSSL 1.1.1 y 3.x, y OpenSSL dentro del ejecutable en Windows. Todo ello junto al Indy que ya tienes. La prueba de sgcWebSockets tiene todo el conjunto de funciones de Enterprise, Indy personalizado incluido.

Lo último del blog

Ver todas las publicaciones →

Estás viendo la vista sgcCustomIndy de eSeGeCe.

Mostrar otro enfoque →
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso