
Un serveur simple pour héberger les certificats valides, révoqués et expirés requis par la Section 2.2 des Baseline Requirements du CA/Browser Forum.
Ceci est un serveur web spécialement conçu pour héberger les pages de test requises par les Exigences de Base du forum CA/Browser. Elles contiennent l'exigence suivante :
L'AC DOIT héberger des pages Web de test qui permettent aux fournisseurs de logiciels d'applications de tester leurs logiciels avec des certificats d'abonné qui remontent jusqu'à chaque certificat racine de confiance publique. Au minimum, l'AC DOIT héberger des pages Web séparées en utilisant des certificats d'abonné valides, révoqués et expirés.
Il utilise le protocole ACME pour obtenir des certificats. Il sert un site web simple avec quelques informations expliquant à quoi sert le site de test.
D'après les Exigences de Base TLS du forum CA/Browser :
Bien que ceci ait été construit pour Let's Encrypt, cela devrait être utilisable par d'autres ACs ACME.
Ceci est un programme Go autonome.
go run main.go -config [path/to/config.json]
Voir config/config.go pour le schéma de configuration et config/testdata/test.json pour un exemple de configuration valide. La configuration de test d'intégration est générée à l'exécution par integration/configgen.
Nous fournissons un fichier docker-compose.yml pour les tests locaux. Il déploiera automatiquement Pebble, une AC de test. Exécutez :
docker compose up --build
Ensuite, accédez à l'un des sites de test.
Ils sont disponibles sur :
Ces URLs peuvent fonctionner immédiatement, mais si elles ne se résolvent pas sur votre système, vous pouvez demander à curl de les résoudre :
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
Si vous souhaitez accéder aux sites depuis votre navigateur, modifiez votre fichier /etc/hosts pour inclure les adresses des certificats de test.
127.0.0.1 valid.localhost revoked.localhost expired.localhost
Ce logiciel a été inspiré par plusieurs incidents que nous avons observés chez d'autres ACs, ainsi que par la complexité de notre solution existante utilisant des outils prêts à l'emploi.
Quelques catégories d'incidents que nous avons observées incluent :
Un serveur avec intégration ACME est le moyen le plus fiable de garantir que les certificats sont maintenus à jour, mais les exigences inhabituelles de servir des certificats révoqués et expirés ne sont pas une fonctionnalité typique d'autres systèmes. Les systèmes de surveillance ne supportent généralement pas non plus la garantie que les certificats sont révoqués ou expirés.
Actuellement, test-certs-site ne supporte que la méthode de validation TLS-ALPN-01. Pour remplir ce défi et servir les sites de test, ce programme écoute sur un port configurable, qui doit être exposé en tant que port TLS, :443.
Notez que dans la configuration de test, il écoute par défaut sur :5001, ce qui correspond au port de validation par défaut de Pebble.
Actuellement, test-certs-site stocke tout le matériel de clé sous forme de chemins sur le disque. Pour faciliter l'exécution de cert-test-program dans des environnements cloud ou éphémères, nous voudrons supporter un mécanisme de persistance des clés vers une gestion de secrets.
En dehors du stockage des clés et certificats, ce programme est sans état.
Il y a un écouteur de débogage configurable qui expose /debug/pprof et /metrics. Les journaux sont imprimés en JSON sur stderr.