
Простой сервер для размещения действительных, отозванных и просроченных сертификатов, требуемых Разделом 2.2 Базовых требований CA/Browser Forum.
Этот специально созданный веб-сервер предназначен для размещения тестовых страниц, необходимых для выполнения Базовых требований форума CA/Browser. Они содержат следующее требование:
УЦ ОБЯЗАН размещать тестовые веб-страницы, позволяющие поставщикам прикладного программного обеспечения тестировать своё программное обеспечение с сертификатами абонентов, которые образуют цепочку к каждому публично доверенному корневому сертификату. Как минимум, УЦ ОБЯЗАН размещать отдельные веб-страницы с использованием сертификатов абонентов, которые являются действительными, отозванными и просроченными.
Он использует протокол ACME для получения сертификатов. Он обслуживает простой веб-сайт с некоторой информацией, объясняющей, для чего предназначен тестовый сайт.
Из Базовых требований TLS форума CA/Browser:
Хотя этот инструмент был создан для Let's Encrypt, он должен быть пригоден для использования другими УЦ, работающими по протоколу ACME.
Это автономная программа на Go.
go run main.go -config [путь/к/config.json]
Смотрите config/config.go для схемы конфигурации и config/testdata/test.json для примера допустимой конфигурации. Конфигурация для интеграционного теста генерируется во время выполнения программой integration/configgen.
Мы предоставляем файл docker-compose.yml для локального тестирования. Он автоматически развернёт Pebble, тестовый УЦ. Выполните:
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
Это программное обеспечение было вдохновлено несколькими инцидентами, которые мы наблюдали у других УЦ, а также сложностью нашего существующего решения с использованием готовых инструментов.
Некоторые категории инцидентов, которые мы наблюдали, включают:
Сервер с интеграцией ACME является наиболее надёжным способом обеспечения актуальности сертификатов, однако необычные требования по обслуживанию отозванных и просроченных сертификатов не являются типичной функцией других систем. Системы мониторинга также обычно не поддерживают проверку того, что сертификаты отозваны или просрочены.
В настоящее время test-certs-site поддерживает только метод проверки TLS-ALPN-01. Для выполнения этого вызова и обслуживания тестовых сайтов программа прослушивает настраиваемый порт, который должен быть открыт как TLS-порт, :443.
Обратите внимание, что в тестовой конфигурации по умолчанию прослушивается порт :5001, что соответствует порту проверки по умолчанию для Pebble.
В настоящее время test-certs-site хранит все ключевые материалы в виде путей на диске. Для упрощения запуска cert-test-program в облачных или эфемерных средах мы планируем реализовать поддержку механизма сохранения ключей в системе управления секретами.
За исключением хранения ключей и сертификатов, эта программа не имеет состояния.
Существует настраиваемый отладочный слушатель, который предоставляет /debug/pprof и /metrics. Логи выводятся в формате JSON в stderr.