
CA/Browser Forum Baseline Requirements의 섹션 2.2에서 요구하는 유효, 폐기, 만료된 인증서를 호스팅하는 간단한 서버입니다.
이는 CA/Browser Forum Baseline Requirements에서 요구하는 테스트 페이지를 호스팅하기 위해 특별히 제작된 웹 서버입니다. 다음 요구사항을 포함합니다:
CA는 Application Software Supplier가 각 공개 신뢰 루트 인증서로 체인을 구성하는 가입자 인증서로 소프트웨어를 테스트할 수 있도록 테스트 웹 페이지를 호스팅해야 합니다. 최소한 CA는 유효한, 폐기된, 만료된 가입자 인증서를 사용하는 별도의 웹 페이지를 호스팅해야 합니다.
ACME 프로토콜을 사용하여 인증서를 획득합니다. 테스트 사이트의 용도를 설명하는 간단한 웹사이트를 제공합니다.
CA/Browser Forum TLS Baseline Requirements에서 발췌:
이 도구는 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 파일을 제공합니다. 자동으로 테스트 CA인 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
이 소프트웨어는 다른 CA에서 관찰된 여러 사고와 기성 도구를 사용한 기존 솔루션의 복잡성에서 영감을 받았습니다.
관찰된 사고 유형은 다음과 같습니다:
ACME 통합 서버는 인증서를 최신 상태로 유지하는 가장 신뢰할 수 있는 방법이지만, 폐기 및 만료된 인증서를 제공하는 비정상적인 요구 사항은 다른 시스템의 일반적인 기능이 아닙니다. 또한 모니터링 시스템은 일반적으로 인증서가 폐기되거나 만료되었는지 확인하는 것을 지원하지 않습니다.
현재 test-certs-site는 TLS-ALPN-01 검증 방법만 지원합니다. 이 챌린지를 수행하고 테스트 사이트를 제공하기 위해 이 프로그램은 구성 가능한 포트에서 수신 대기하며, 이 포트는 TLS 포트인 :443으로 노출되어야 합니다.
참고로 테스트 구성에서는 기본적으로 :5001에서 수신하며, 이는 Pebble의 기본 검증 포트와 일치합니다.
현재 test-certs-site는 모든 키 자료를 디스크의 경로로 저장합니다. 클라우드 또는 임시 환경에서 cert-test-program을 쉽게 실행하기 위해 시크릿 관리에 키를 유지하는 메커니즘을 지원할 예정입니다.
키 및 인증서 저장소를 제외하면 이 프로그램은 상태 비저장(stateless)입니다.
/debug/pprof 및 /metrics를 노출하는 구성 가능한 디버그 리스너가 있습니다. 로그는 JSON 형식으로 stderr에 출력됩니다.