Nginx: OCSP y certificados de cliente

Nginx: OCSP y certificados de cliente

Tengo una configuración de Nginx funcional con el grapado OCSP configurado. Ahora quiero agregar autenticación de certificado de cliente para varias URL.

Entonces agregué una ssl_client_certificatedeclaración que apunta al certificado de CA que usamos para las URL restringidas (es un certificado de CA privado, no firmado por ninguna CA conocida públicamente) y debido a que la mayor parte del servidor aún debería estar disponible públicamente, lo configuré ssl_verify_clienten optional.

Esto funciona solo a mitad de camino: puedo ejecutar solicitudes con cURL (*), tanto con como sin pasar un certificado y recibir las respuestas esperadas tanto en las URL públicas como en las protegidas que verifican la presencia del certificado.

Pero ahora, mi pregunta: al acceder a las mismas URL con un navegador (sin presentar un certificado), Nginx responde con el error 400. Lo que me desconcierta es que cuando uso Firefox Developer Tools para crear una solicitud cURL a partir de cualquiera de las solicitudes fallidas y ejecutarlos desde la línea de comando, funciona perfectamente. ¿Cual podría ser el problema?

Además, incluso los cURL -vno --trace-asciimuestran nada que me explique por qué podría fallar desde un navegador. No voy a pegar toda la configuración (larga) aquí. Si crees que falta algo elemental, no dudes en comentar.

Editar: verifiqué y confirmé que cURL envía encabezados , Hostasí como cookies e ID de sesión , y habilita la compresión tal como lo haría Firefox.User-AgentAcceptAccept-LanguageReferrerDNT

Además, tanto Firefox como cURL no tienen ningún certificado de cliente que puedan ofrecer al servidor y Firefox también está configurado para solicitar certificados en lugar de ofrecerlos automáticamente.

Otra edición: después de regresar del almuerzo (sin cambios de configuración mientras tanto), Firefox pudo cargar la primera página y los recursos asociados una vez. Ahora, unos minutos más tarde, con solo intentar varias solicitudes, es decir, sin cambios, ya no funciona. Además, Chrome informa el error 400 y el uso de "Copiar como cURL" (que nuevamente incluye todos los encabezados) de sus herramientas de desarrollador muestra que funciona nuevamente en cURL. También probé todas las solicitudes varias veces para asegurarme de que no hubiera inconsistencia en el comportamiento mostrado hacia un único agente de usuario. Estoy perplejo, todo me parece muy aleatorio.

información relacionada