Quinn es una implementación pura de alianza y compatible con async del protocolo de transporte IETF Quic. El proyecto fue fundado por Dirkjan Ochtman y Benjamin Saunders como un proyecto paralelo en 2018, y ha visto más de 30 lanzamientos desde entonces. Si está utilizando Quinn en un entorno comercial, considere patrocinar el proyecto.
Ejemplos
$ cargo run --example server ./
$ cargo run --example client https://localhost:4433/Cargo.toml Esto inicia un servidor HTTP 0.9 en la dirección de loopback que sirve al directorio de trabajo actual, con el cliente obteniendo ./Cargo.toml . Por defecto, el servidor genera un certificado autofirmado y lo almacena en el disco, donde el cliente lo encontrará y confiará automáticamente.
Campo de golf
Un punto final de Quinn corresponde a un solo enchufe UDP, sin importar cuántas conexiones estén en uso. El manejo de altas tasas de datos agregados en un solo punto final puede requerir un búfer UDP más grande que el configurado de forma predeterminada en la mayoría de los entornos. Si observa una latencia y/o rendimiento erráticos sobre un enlace de red estable, considere aumentar los tamaños de búfer utilizados. Por ejemplo, puede ajustar las opciones SO_SNDBUF y SO_RCVBUF del socket UDP para usarlo antes de pasarlo a Quinn. Tenga en cuenta que algunas plataformas (por ejemplo, Linux) requieren privilegios elevados o configuración de sistema modificada para un proceso para aumentar sus tamaños de búfer UDP.
Por defecto, los clientes Quinn validan la identidad criptográfica de los servidores a los que se conectan. Esto evita que un atacante activo y en camino intercepte mensajes, pero requiere confiar en alguna autoridad de certificado. Para muchos propósitos, esto se puede lograr mediante el uso de certificados de Let's Cifryp para servidores y confiando en la configuración predeterminada para los clientes.
Para algunos casos, incluidas las aplicaciones entre pares, de confianza, de uso de primer nivel, deliberadamente inseguro, o cualquier caso en el que los servidores no sean identificados por el nombre de dominio, esto no es práctico. La lógica arbitraria de validación de certificados se puede implementar habilitando la función dangerous_configuration de rustls y construyendo un CLIMNIN ClientConfig con un verificador de certificado anulado a mano.
Cuando la operación de su propia autoridad de certificado no tiene sentido, RCGEN se puede usar para generar certificados autofirmados a pedido. Para admitir los servidores de confianza en el primer uso que generan automáticamente certificados autofirmados deben escribir su certificado generado para almacenamiento persistente y reutilizarlo en ejecuciones futuras.
Todos los comentarios son bienvenidos. No dude en presentar errores, solicitudes de documentación y cualquier otro comentario al rastreador de problemas.
La suite de prueba Quinn-Proto utiliza IO simulada para la reproducibilidad y para evitar los duros largos en ciertas pruebas sensibles a la sincronización. Si se establece la variable de entorno SSLKEYLOGFILE , las pruebas emitirán paquetes UDP para su inspección utilizando analizadores de protocolo externos como Wireshark, y los registros de clave compatibles con NSS para el lado del cliente de cada conexión se escribirán en la ruta especificada en la variable.
La versión mínima de óxido compatible para lanzamientos publicados de nuestras cajas siempre tendrá al menos 6 meses en el momento del lanzamiento.