BLOG | NGINX

QUIC+HTTP/3 Support for OpenSSL with NGINX (Soporte QUIC+HTTP/3 para OpenSSL con NGINX)

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Prabhat Dixit
Prabhat Dixit
Publicado el 13 de septiembre de 2023

Los desarrolladores generalmente quieren crear aplicações e infraestructura utilizando bibliotecas publicadas, oficiales y compatibles. Incluso con HTTP/3, existe una fuerte necesidad de una biblioteca conveniente que admita QUIC y no aumente los costos de mantenimiento ni la complejidad operativa en la infraestructura de producción.

Para muchos usuarios de QUIC+HTTP/3 , esa biblioteca criptográfica predeterminada es OpenSSL . Instalado de forma predeterminada en la mayoría de los sistemas operativos basados ​​en Linux, OpenSSL es la biblioteca de seguridad de la capa de transporte (TLS) número uno y es utilizada por la mayoría de las aplicações de red.

El problema: Incompatibilidad entre OpenSSL y QUIC+HTTP/3

Incluso con un uso tan amplio, OpenSSL no proporciona la API TLS necesaria para la compatibilidad con QUIC. En lugar de ello, el Comité de Gestión de OpenSSL decidió implementar una pila QUIC completa por su cuenta. Este esfuerzo es un esfuerzo considerable planificado para OpenSSL v3.4 pero, según la hoja de ruta de OpenSSL , es probable que no suceda antes de fines de 2024. Además, el producto mínimo viable inicial de la implementación de OpenSSL no contendrá la implementación de la API QUIC, por lo que no hay un camino claro para que los usuarios obtengan soporte HTTP/3 con OpenSSL.

Opciones para compatibilidad con QUIC TLS

En esta situación, hay dos opciones para los usuarios que buscan compatibilidad con QUIC TLS para sus necesidades HTTP/3:

  • Implementación de OpenSSL QUIC : como se mencionó anteriormente, OpenSSL está trabajando actualmente en la implementación de una pila QUIC completa por su cuenta. Este desarrollo encapsulará toda la funcionalidad de QUIC dentro de la implementación, lo que hará mucho más fácil para los usuarios de HTTP/3 utilizar la API TLS de OpenSSL sin preocuparse por la funcionalidad específica de QUIC.
  • Bibliotecas compatibles con la API QUIC de BoringSSL : Varias bibliotecas SSL como BoringSSL , quicTLS y LibreSSL (que surgieron como bifurcaciones de OpenSSL) ahora ofrecen la funcionalidad QUIC TLS mediante la implementación de la API QUIC de BoringSSL. Sin embargo, estas bibliotecas no están tan ampliamente adoptadas como OpenSSL. Esta opción también requiere construir la biblioteca SSL desde la fuente e instalarla en cada servidor que necesite soporte QUIC+HTTP/3, lo que podría no ser una opción viable para todos. Dicho esto, esta es actualmente la única opción para los usuarios que desean utilizar HTTP/3 porque la implementación de OpenSSL QUIC TLS aún no está lista.

Una nueva solución: La capa de compatibilidad de OpenSSL

En NGINX, nos sentimos inspirados por estos desafíos y creamos la capa de compatibilidad OpenSSL para simplificar las implementaciones QUIC+HTTP/3 que usan OpenSSL y ayudar a evitar las complejidades asociadas con el mantenimiento de una biblioteca SSL separada en entornos de producción.

Disponible con la línea principal de código abierto NGINX desde la versión 1.25.0 y NGINX Plus R30 , la capa de compatibilidad OpenSSL permite a NGINX ejecutar QUIC+HTTP/3 sobre OpenSSL sin necesidad de parchearlo o reconstruirlo. Esto elimina la dependencia de compilar e implementar bibliotecas TLS de terceros para obtener soporte QUIC. Como los usuarios no necesitan utilizar bibliotecas de terceros, también se alivia la dependencia de los cronogramas y las hojas de ruta de esas bibliotecas, lo que la convierte en una solución comparativamente más fácil de implementar en producción.

Cómo funciona la capa de compatibilidad de OpenSSL

La capa de compatibilidad de OpenSSL implementa estos pasos:

  • Convierte un protocolo de enlace QUIC en un protocolo de enlace TLS 1.3 compatible con OpenSSL.
  • Pasa los mensajes de protocolo de enlace TLS dentro y fuera de OpenSSL.
  • Obtiene las claves de cifrado para el protocolo de enlace y los niveles de cifrado de la aplicação de OpenSSL.
  • Pasa los parámetros de transporte QUIC dentro y fuera de OpenSSL.

Teniendo en cuenta la cantidad de adopción de OpenSSL en la actualidad y conociendo su estado con el soporte oficial de QUIC+HTTP/3, creemos que una opción fácil y escalable para habilitar QUIC es un paso en la dirección correcta. También promoverá la adopción de HTTP/3 y permitirá recibir comentarios valiosos. Lo más importante es que confiamos en que la capa de compatibilidad de OpenSSL nos ayudará a proporcionar una solución más sólida y escalable para nuestros usuarios empresariales y toda la comunidad NGINX.

Nota : Si bien nos aseguramos de que los usuarios de NGINX tengan una opción sencilla y escalable gracias a la disponibilidad de la Capa de Compatibilidad de OpenSSL, aún tienen opciones para usar bibliotecas de terceros como BoringSSL, quicTLS o LibreSSL con NGINX. Para decidir cuál es la opción más adecuada para usted, considere qué enfoque se adapta mejor a sus necesidades y qué tan cómodo se siente compilando y administrando bibliotecas como dependencias.

Una nota sobre 0-RTT

0-RTT es una característica de QUIC que permite a un cliente enviar datos de la aplicação antes de que se complete el protocolo de enlace TLS. La funcionalidad 0-RTT es posible gracias a la reutilización de parámetros negociados de una conexión anterior. Esto se habilita cuando el cliente recuerda parámetros críticos y proporciona al servidor un ticket de sesión TLS que le permite recuperar la misma información.

Si bien esta característica es una parte importante de QUIC, aún no es compatible con la capa de compatibilidad de OpenSSL. Si tiene casos de uso específicos que requieren 0-RTT, agradecemos sus comentarios para informar nuestra hoja de ruta.

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

Puede comenzar a utilizar la capa de compatibilidad OpenSSL de NGINX hoy mismo 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.

Más información sobre NGINX con QUIC+HTTP/3 y OpenSSL está disponible en los recursos a continuación.


"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.