OCSP Stapling y no cachear errores OCSP en Apache

He tratado el tema de OCSP Stapling antes. Por ejemplo, OCSP Stapling y la privacidad de tus usuarios. Resumiendo: Online Certificate Status Protocol permite comprobar en tiempo real si un certificado X.509 está revocado o no, pero ello supone comprometer la privacidad de nuestros usuarios. Usando OCSP Stapling, el servidor web se hace cargo de solicitar el estado OCSP, se lo guarda mientras siga siendo válido y envía el resultado a cada navegador que se conecta para evitar que lo haga el propio navegador del usuario. Esto mejora la velocidad de respuesta percibida y no compromete la privacidad del usuario.

OCSP Stapling debería funcionar bien, pero de la teoría a la práctica siempre hay un trecho. Léase, por ejemplo, mi artículo OCSP y el depender de la profesionalidad ajena.

La versión 2.4.18 del servidor web Apache soluciona por fin un bug en la gestión de OCSP Stapling. Ahora es posible indicar a Apache que solo guarde las respuestas OCSP si estas indican que el certificado es correcto y válido. Esto evita enviar a los navegadores web una notificación OCSP que indica que nuestro propio certificado es inválido. Al margen de ser contraproducente, cachear ese resultado durante horas es desastroso.

La directiva SSLStaplingReturnResponderErrors está disponible desde hace tiempo, pero hasta la versión 2.4.18 de Apache no se comportaba correctamente. La entrada correspondiente en el fichero de cambios del proyecto es:

mod_ssl: For the "SSLStaplingReturnResponderErrors off" case, make sure to only staple responses with certificate status "good". [Kaspar Brand]

La documentación de la directiva.

En resumen, para configurar Apache de forma que solo envíe a los navegadores web visitantes las respuestas OCSP que indican que el certificado X.509 es válido, tenemos que añadir esto a la configuración:

SSLStaplingReturnResponderErrors off

Para que funcione correctamente necesitaremos una versión de Apache igual o superior a la 2.4.18.