Compatibilidad con QUIC+HTTP/3 para OpenSSL con NGINX

NGINX | 13 de septiembre de 2023

Los desarrolladores suelen querer crear aplicaciones e infraestructuras utilizando bibliotecas publicadas oficialmente y con soporte. Incluso con HTTP/3, existe una gran necesidad de contar con una biblioteca práctica que sea compatible con QUIC y no aumente los costes de mantenimiento ni la complejidad operativa de la infraestructura de producción.

Para muchos usuarios de QUIC+HTTP/3, la biblioteca criptográfica predeterminada es OpenSSL. OpenSSL, instalada de forma predeterminada en la mayoría de los sistemas operativos basados en Linux, es la principal biblioteca de seguridad de la capa de transporte (TLS) y la utilizan la mayoría de las aplicaciones de red.

El problema: la incompatibilidad entre OpenSSL y QUIC+HTTP/3

A pesar de su uso tan extendido, OpenSSL no proporciona la API de TLS necesaria para admitir QUIC. En su lugar, el Comité de Gestión de OpenSSL decidió implementar por su cuenta una pila QUIC completa. Se trata de un esfuerzo considerable previsto para OpenSSL v3.4, pero, según la hoja de ruta de OpenSSL, es poco probable que esté listo antes de finales de 2024. Además, el producto mínimo viable inicial de la implementación de OpenSSL no incluirá la implementación de la API de QUIC, por lo que los usuarios no disponen de una vía clara para obtener compatibilidad con HTTP/3 mediante OpenSSL.

Opciones de compatibilidad con TLS para QUIC

En esta situación, los usuarios que necesiten compatibilidad con QUIC TLS para HTTP/3 tienen dos opciones:

  • Implementación de QUIC de OpenSSL – Como se ha mencionado anteriormente, OpenSSL está trabajando actualmente en la implementación de una pila QUIC completa propia. Este desarrollo integrará toda la funcionalidad de QUIC en la implementación, lo que facilitará considerablemente a los usuarios de HTTP/3 el uso de la API TLS de OpenSSL sin tener que preocuparse por las funciones específicas de QUIC.
  • Bibliotecas compatibles con la API QUIC de BoringSSL – Varias bibliotecas SSL, como BoringSSL, quicTLS y LibreSSL (todas ellas surgidas como bifurcaciones de OpenSSL), ofrecen ahora funcionalidad TLS para QUIC mediante la implementación de la API QUIC de BoringSSL. Sin embargo, estas bibliotecas no están tan extendidas como OpenSSL. Esta opción también requiere compilar la biblioteca SSL a partir del código fuente e instalarla en cada servidor que necesite compatibilidad con QUIC+HTTP/3, lo que puede no resultar viable para todo el mundo. Dicho esto, actualmente es la única opción para quienes quieran utilizar HTTP/3, ya que la implementación de QUIC TLS de OpenSSL aún no está lista.

Una nueva solución: la capa de compatibilidad con OpenSSL

En NGINX, estos retos nos sirvieron de inspiración para crear la capa de compatibilidad con OpenSSL, que simplifica las implementaciones de QUIC+HTTP/3 que utilizan OpenSSL y ayuda a evitar las complejidades asociadas al mantenimiento de una biblioteca SSL independiente en entornos de producción.

Disponible con NGINX Open Source mainline desde la versión 1.25.0 y NGINX Plus R30, la capa de compatibilidad con OpenSSL permite que NGINX ejecute QUIC+HTTP/3 sobre OpenSSL sin necesidad de aplicar parches ni recompilarlo. Esto elimina la necesidad de compilar e implementar bibliotecas TLS de terceros para obtener compatibilidad con QUIC. Como los usuarios no necesitan utilizar bibliotecas de terceros, también se reduce la dependencia de los calendarios y las hojas de ruta de dichas bibliotecas, lo que hace que sea una solución comparativamente más fácil de implementar en entornos de producción.

Cómo funciona la capa de compatibilidad con OpenSSL

La capa de compatibilidad con OpenSSL lleva a cabo los siguientes pasos:

  • Convierte un protocolo de enlace QUIC en un protocolo de enlace TLS 1.3 compatible con OpenSSL.
  • Transfiere los mensajes del protocolo de enlace TLS hacia y desde OpenSSL.
  • Obtiene de OpenSSL las claves de cifrado para los niveles de cifrado del protocolo de enlace y de la aplicación.
  • Transfiere los parámetros de transporte de QUIC hacia y desde OpenSSL.

Dado el grado de adopción actual de OpenSSL y teniendo en cuenta el estado de su compatibilidad oficial con QUIC+HTTP/3, creemos que ofrecer una opción sencilla y escalable para habilitar QUIC es un paso en la dirección correcta. También fomentará la adopción de HTTP/3 y permitirá obtener comentarios valiosos. Y, lo que es más importante, confiamos en que la capa de compatibilidad con OpenSSL nos ayudará a ofrecer una solución más sólida y escalable a nuestros usuarios empresariales y a toda la comunidad de NGINX.

Nota: Aunque nos aseguramos de que los usuarios de NGINX dispongan de una opción sencilla y escalable gracias a la capa de compatibilidad con OpenSSL, también pueden utilizar con NGINX bibliotecas de terceros como BoringSSL, quicTLS o LibreSSL. Para decidir cuál es la opción más adecuada para usted, valore qué enfoque se ajusta mejor a sus requisitos y hasta qué punto se siente cómodo compilando y gestionando bibliotecas como dependencias.

Nota sobre 0-RTT

0-RTT es una función de QUIC que permite a un cliente enviar datos de la aplicación antes de que se complete el protocolo de enlace TLS. La funcionalidad 0-RTT es posible gracias a la reutilización de los parámetros negociados en una conexión anterior. Para habilitarla, el cliente recuerda los parámetros esenciales y proporciona al servidor un ticket de sesión TLS que le permite recuperar la misma información.

Aunque esta funcionalidad es una parte importante de QUIC, todavía no es compatible con la capa de compatibilidad de OpenSSL. Si tiene casos de uso específicos que requieran 0-RTT, agradeceremos sus comentarios para orientar nuestra hoja de ruta.

Más información sobre NGINX con QUIC+HTTP/3 y OpenSSL

Puede empezar a utilizar hoy mismo la capa de compatibilidad con OpenSSL de NGINX con NGINX Open Source o iniciando una prueba gratuita de 30 días de NGINX Plus. Esperamos que le resulte útil y agradecemos sus comentarios.

Encontrará más información sobre NGINX con QUIC+HTTP/3 y OpenSSL en los siguientes recursos.


Compartir
Etiquetas: Security, F5 NGINX, Tech, 2023

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.