
Ein einfacher Server zum Hosten der gültigen, widerrufenen und abgelaufenen Zertifikate, die gemäß Abschnitt 2.2 der CA/Browser Forum Baseline Requirements erforderlich sind.
Dies ist ein speziell entwickelter Webserver zum Hosten der Testseiten, die von den CA/Browser Forum Baseline Requirements gefordert werden. Sie enthalten die folgende Anforderung:
Die CA MUSS Test-Webseiten hosten, die es Application Software Suppliers ermöglichen, ihre Software mit Subscriber Certificates zu testen, die zu jedem öffentlich vertrauten Root Certificate verkettet sind. Mindestens muss die CA separate Webseiten hosten, die Subscriber Certificates verwenden, die gültig, widerrufen und abgelaufen sind.
Es verwendet das ACME-Protokoll zum Erhalt von Zertifikaten. Es stellt eine einfache Website mit Informationen bereit, die erklären, wofür die Testseite ist.
Aus den CA/Browser Forum TLS Baseline Requirements:
Obwohl dies für Let's Encrypt entwickelt wurde, sollte es von anderen ACME-CAs nutzbar sein.
Dies ist ein eigenständiges Go-Programm.
go run main.go -config [path/to/config.json]
Siehe config/config.go für das Konfigurationsschema und config/testdata/test.json für ein Beispiel einer gültigen Konfiguration. Die Integrationstestkonfiguration wird zur Laufzeit von integration/configgen generiert.
Wir stellen eine docker-compose.yml-Datei für lokale Tests bereit. Sie wird automatisch Pebble, eine Test-CA, bereitstellen.
Führen Sie aus:
docker compose up --build
Greifen Sie dann auf eine der Testseiten zu.
Sie sind verfügbar unter:
Diese URLs könnten sofort funktionieren, aber wenn sie auf Ihrem System nicht aufgelöst werden, können Sie curl dazu bringen, sie aufzulösen:
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
Wenn Sie die Seiten von Ihrem Browser aus aufrufen möchten, bearbeiten Sie Ihre /etc/hosts-Datei, um die Adressen der Testzertifikate einzufügen.
127.0.0.1 valid.localhost revoked.localhost expired.localhost
Diese Software wurde durch mehrere Vorfälle inspiriert, die wir bei anderen CAs beobachtet haben, sowie durch die Komplexität unserer bestehenden Lösung mit handelsüblichen Tools.
Einige Kategorien von Vorfällen, die wir beobachtet haben, umfassen:
Ein Server mit ACME-Integration ist der zuverlässigste Weg, um sicherzustellen, dass Zertifikate aktuell bleiben, aber die ungewöhnlichen Anforderungen, widerrufene und abgelaufene Zertifikate auszuliefern, sind keine typische Funktion anderer Systeme. Überwachungssysteme unterstützen normalerweise auch nicht die Sicherstellung, dass Zertifikate widerrufen oder abgelaufen sind.
Derzeit unterstützt test-certs-site nur die TLS-ALPN-01-Validierungsmethode. Um diese Challenge zu erfüllen und die Testseiten auszuliefern, hört dieses Programm auf einem konfigurierbaren Port, der als TLS-Port :443 bereitgestellt werden sollte.
Beachten Sie, dass die Testkonfiguration standardmäßig auf :5001 lauscht, was dem Standard-Validierungsport von Pebble entspricht.
Derzeit speichert test-certs-site alle Schlüsselmaterialien als Pfade auf der Festplatte. Um das Ausführen von cert-test-program in Cloud- oder kurzlebigen Umgebungen zu erleichtern, werden wir einen Mechanismus zur Persistierung von Schlüsseln in einer Secret-Verwaltung unterstützen wollen.
Abgesehen von der Speicherung von Schlüsseln und Zertifikaten ist dieses Programm zustandslos.
Es gibt einen konfigurierbaren Debug-Listener, der /debug/pprof und /metrics bereitstellt. Logs werden im JSON-Format nach stderr ausgegeben.