
Un servidor simple para alojar los certificados válidos, revocados y expirados requeridos por la Sección 2.2 de los CA/Browser Forum Baseline Requirements.
Este es un servidor web diseñado específicamente para alojar las páginas de prueba requeridas por los Requisitos Base del foro CA/Browser. Contienen el siguiente requisito:
La AC DEBERÁ alojar páginas web de prueba que permitan a los Proveedores de Software de Aplicación probar su software con Certificados de Suscriptor que encadenen hasta cada Certificado Raíz de confianza pública. Como mínimo, la AC DEBERÁ alojar páginas web separadas utilizando Certificados de Suscriptor que sean válidos, revocados y expirados.
Utiliza el protocolo ACME para obtener certificados. Sirve un sitio web simple con información que explica para qué sirve el sitio de prueba.
De los Requisitos Base TLS del foro CA/Browser:
Aunque fue construido para Let's Encrypt, debería ser utilizable por otras AC de ACME.
Este es un programa independiente en Go.
go run main.go -config [ruta/a/config.json]
Vea config/config.go para el esquema de configuración y config/testdata/test.json para un ejemplo de configuración válida. La configuración de prueba de integración se genera en tiempo de ejecución por integration/configgen.
Proporcionamos un archivo docker-compose.yml para pruebas locales. Implementará automáticamente Pebble, una AC de prueba. Ejecute:
docker compose up --build
Luego, acceda a uno de los sitios de prueba.
Están disponibles en:
Estas URL pueden funcionar inmediatamente, pero si no se resuelven en su sistema, puede hacer que curl las resuelva:
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
Si desea acceder a los sitios desde su navegador, edite su archivo /etc/hosts para incluir las direcciones de los certificados de prueba.
127.0.0.1 valid.localhost revoked.localhost expired.localhost
Este software fue inspirado por varios incidentes que observamos de otras AC, así como por la complejidad de nuestra solución existente utilizando herramientas listas para usar.
Algunas categorías de incidentes que hemos observado incluyen:
Un servidor con integración ACME es la forma más confiable de asegurar que los certificados se mantengan actualizados, pero los requisitos inusuales de servir certificados revocados y expirados no es una característica típica de otros sistemas. Los sistemas de monitoreo tampoco suelen admitir la verificación de que los certificados estén revocados o expirados.
Actualmente, test-certs-site solo admite el método de validación TLS-ALPN-01. Para cumplir con este desafío y servir los sitios de prueba, este programa escucha en un puerto configurable, que debe exponerse como el puerto TLS, :443.
Tenga en cuenta que en la configuración de prueba escucha en :5001 por defecto, que coincide con el puerto de validación predeterminado de Pebble.
Actualmente, test-certs-site almacena todo el material de claves como rutas en disco. Para facilitar la ejecución de cert-test-program en entornos de nube o efímeros, querremos admitir algún mecanismo para persistir claves en la gestión de secretos.
Aparte del almacenamiento de claves y certificados, este programa no tiene estado.
Hay un listener de depuración configurable que expone /debug/pprof y /metrics. Los registros se imprimen en JSON a stderr.