
CA/Browser Forum Baseline RequirementsのSection 2.2で要求される、有効、失効、および期限切れの証明書をホストするためのシンプルなサーバー。
これは、CA/Browser Forumのベースライン要件で必要とされるテストページをホストするために特別に構築されたウェブサーバーです。以下の要件が含まれています:
CAは、アプリケーションソフトウェアサプライヤーが、それぞれの公開信頼ルート証明書にチェーンする加入者証明書を使用してソフトウェアをテストできるようにするテストWebページをホストしなければなりません。最低限、CAは有効、失効、および期限切れの加入者証明書を使用した個別のWebページをホストしなければなりません。
このツールはACMEプロトコルを使用して証明書を取得します。テストサイトの目的を説明する簡単な情報を提供するシンプルなウェブサイトを提供します。
CA/Browser Forum 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ファイルを提供しています。これにより、テスト用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の実行を容易にするために、鍵をシークレット管理に永続化するメカニズムをサポートする予定です。
鍵と証明書の保存以外は、このプログラムはステートレスです。
設定可能なデバッグリスナーがあり、/debug/pprofおよび/metricsを公開します。ログはJSON形式でstderrに出力されます。