这是一个专门构建的 Web 服务器,用于托管 CA/浏览器论坛基线要求所需的测试页面。这些页面包含以下要求:
CA 应当托管测试网页,供应用软件供应商使用链接到每个公开信任根证书的订阅者证书来测试其软件。CA 至少应使用有效、已吊销和已过期的订阅者证书托管单独的网页。
它使用 ACME 协议获取证书。它提供一个简单的网站,包含一些解释该测试站点用途的信息。
来自 CA/浏览器论坛 TLS 基线要求:
虽然这是为 Let's Encrypt 构建的,但其他 ACME CA 应该也能使用。
这是一个独立的 Go 程序。
go run main.go -config [path/to/config.json]
请参阅 config/config.go 了解配置模式,以及 config/testdata/test.json 了解有效配置示例。集成测试配置由 integration/configgen 在运行时生成。
我们提供了一个 docker-compose.yml 文件用于本地测试。它会自动部署 Pebble 测试 CA。执行:
docker compose up --build
然后,访问其中一个测试站点。
它们可通过以下地址访问:
这些 URL 可能立即可用,但如果您的系统无法解析,您可以让 curl 解析它们:
curl -k --resolve revoked.localhost:5001:127.0.0.1 'https://revoked.localhost:5001/'
如果您想从浏览器访问这些站点,请编辑您的 /etc/hosts 文件,包含测试证书的地址。
127.0.0.1 valid.localhost revoked.localhost expired.localhost
该软件的灵感来自我们观察到的其他 CA 发生的几起事故,以及我们使用现成工具的现有解决方案的复杂性。
我们观察到的一些事故类别包括:
具有 ACME 集成的服务器是确保证书保持最新的最可靠方式,但提供已吊销和已过期证书的特殊要求并非其他系统的典型功能。监控系统通常也不支持确保证书已吊销或过期。
目前,test-certs-site 仅支持 TLS-ALPN-01 验证方法。为了完成此挑战并服务于测试站点,该程序监听一个可配置的端口,该端口应作为 TLS 端口 :443 暴露。
注意:在测试配置中,默认监听 :5001,这与 Pebble 的默认验证端口一致。
目前,test-certs-site 将所有密钥材料存储为磁盘上的路径。为了便于在云或临时环境中运行 cert-test-program,我们将需要支持某种将密钥持久化到密钥管理的机制。
除了密钥和证书存储之外,该程序是无状态的。
有一个可配置的调试监听器,暴露 /debug/pprof 和 /metrics。日志以 JSON 格式打印到 stderr。