
Un semplice server per ospitare i certificati validi, revocati e scaduti richiesti dalla Sezione 2.2 dei Requisiti di Base del CA/Browser Forum.
Questo è un webserver creato appositamente per ospitare le pagine di test richieste dai Requisiti di Base del CA/Browser Forum. Contengono il seguente requisito:
La CA DEVE ospitare pagine Web di prova che consentano ai Fornitori di Software Applicativo di testare il proprio software con Certificati Sottoscrittore che arrivano fino a ciascun Certificato Radice pubblicamente fidato. Come minimo, la CA DEVE ospitare pagine Web separate utilizzando Certificati Sottoscrittore che siano validi, revocati e scaduti.
Utilizza il protocollo ACME per ottenere certificati. Serve un sito web semplice con alcune informazioni che spiegano a cosa serve il sito di test.
Dai Requisiti di Base TLS del CA/Browser Forum:
Sebbene sia stato costruito per Let's Encrypt, dovrebbe essere utilizzabile da altre CA ACME.
Questo è un programma Go autonomo.
go run main.go -config [path/to/config.json]
Vedi config/config.go per lo schema di configurazione e config/testdata/test.json per un esempio di configurazione valida. La configurazione del test di integrazione viene generata in fase di esecuzione da integration/configgen.
Forniamo un file docker-compose.yml per il test locale. Implementerà automaticamente Pebble, una CA di test. Esegui:
docker compose up --build
Quindi, accedi a uno dei siti di test.
Sono disponibili su:
Questi URL potrebbero funzionare immediatamente, ma se non si risolvono sul tuo sistema, puoi far risolvere curl con:
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
Se desideri accedere ai siti dal tuo browser, modifica il file /etc/hosts per includere gli indirizzi dei certificati di test.
127.0.0.1 valid.localhost revoked.localhost expired.localhost
Questo software è stato ispirato da diversi incidenti che abbiamo osservato da altre CA, così come dalla complessità della nostra soluzione esistente che utilizzava strumenti standard.
Alcune categorie di incidenti che abbiamo osservato includono:
Un server con integrazione ACME è il modo più affidabile per garantire che i certificati siano mantenuti aggiornati, ma i requisiti insoliti di servire certificati revocati e scaduti non sono una caratteristica tipica di altri sistemi. Anche i sistemi di monitoraggio di solito non supportano la garanzia che i certificati siano revocati o scaduti.
Attualmente, test-certs-site supporta solo il metodo di validazione TLS-ALPN-01. Per soddisfare questa sfida e servire i siti di test, questo programma ascolta su una porta configurabile, che dovrebbe essere esposta come porta TLS, :443.
Nota che nella configurazione di test ascolta sulla porta :5001 per impostazione predefinita, che corrisponde alla porta di validazione predefinita di Pebble.
Attualmente, test-certs-site memorizza tutto il materiale delle chiavi come percorsi su disco. Per facilitare l'esecuzione di cert-test-program in ambienti cloud o effimeri, vorremmo supportare un meccanismo per persistere le chiavi nella gestione dei segreti.
Oltre all'archiviazione di chiavi e certificati, questo programma è stateless.
È presente un listener di debug configurabile che espone /debug/pprof e /metrics. I log vengono stampati in JSON su stderr.