Enterprise エディション
Certificate Transparency — 詳細リファレンス
このページは、NextPDF Enterprise における Certificate Transparency(CT)サーフェスの詳細リファレンスです。このサーフェスは、1 つの不変な値オブジェクト NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult です。これは X.509 署名証明書の Signed Certificate Timestamp(SCT)状態を要約します。SCT 拡張フラグ、SCT の総数と有効数、および発行ログ識別子を保持します。ポリシーメソッド meetsPolicy() を 1 つ公開しており、これは最小 SCT しきい値チェックです。この型は結果を表すものであり、SCT を抽出したり、SCT 署名を検証したり、CT ログに接続したりはしません。ワークフローレベルのガイドについては、署名証明書のための Certificate Transparency ポリシーを参照してください。
提供状況とライセンス
「提供状況とライセンス」という見出しのセクションこの機能は NextPDF Enterprise(nextpdf/enterprise)に含まれ、Enterprise ティアのライセンスエンベロープで有効化されます。その権利を持たないデプロイメントでは、この機能のクラスは読み込まれません。エディションを比較してライセンスを取得する。
公開 API サーフェス
「公開 API サーフェス」という見出しのセクション| シンボル | パラメータ | デフォルト動作 | 戻り値 | スロー/失敗条件 | 備考 |
|---|---|---|---|---|---|
CtValidationResult | — | 証明書の SCT 状態を要約する不変な値オブジェクト | — | スローしない | final readonly。コンストラクタで昇格された 4 つのプロパティはすべて public |
CtValidationResult::__construct | bool $hasSctsExtension、int $totalScts、int $validScts、array<string> $logIds | 与えられた値を、検証や整合なしにそのまま格納 | 新しい CtValidationResult インスタンス | @throws の宣言なし。strict_types 下で引数型が不一致の場合、PHP が TypeError を送出 | 昇格された public readonly プロパティ |
CtValidationResult::meetsPolicy | int $minimumScts = 2 | 有効 SCT 数をしきい値と比較:validScts >= $minimumScts | bool | スローしない | 有効 SCT のみをカウント。ログの相異性や拡張の有無は確認しない |
final readonly class CtValidationResultpublic function __construct( public bool $hasSctsExtension, public int $totalScts, public int $validScts, public array $logIds,) {}public function meetsPolicy(int $minimumScts = 2): boolpublic readonly プロパティ
| プロパティ | 型 | 意味 |
|---|---|---|
$hasSctsExtension | bool | 証明書が SCT 拡張を含むかどうか |
$totalScts | int | 拡張内で見つかった SCT の総数 |
$validScts | int | 上流で判定された、有効な署名を持つ SCT の数 |
$logIds | array<string> | SCT を発行した CT ログのログ識別子(SHA-256 ハッシュ) |
CtValidationResultは結果値です。呼び出し側の環境が実行した SCT 抽出と検証の結果を表します。証明書を解析したり、SCT 署名を検証したり、ログを照会したり、証明書をログに提出したりはしません。- ここでいう拡張とは、OID
1.3.6.1.4.1.11129.2.4.2で識別される埋め込み SCT の X.509v3 証明書拡張です — RFC 6962 §3.3。SCT はバージョン、ログ識別子、タイムスタンプ、拡張、およびエントリに対するログ署名を保持します — RFC 6962 §3.2。 $logIdsの各エントリは、RFC 6962 §3.2 で定義されるログ識別子、すなわち DER エンコードされたSubjectPublicKeyInfoに対して計算されたログ公開鍵の SHA-256 ハッシュです。この型は文字列を与えられたまま格納し、再計算や検証は行いません。meetsPolicy()はちょうど 1 つの比較を実装します。有効 SCT 数がしきい値以上かどうかです。デフォルトのしきい値は2です。meetsPolicy()は$hasSctsExtensionを参照しません。拡張が欠落している場合に失敗させる必要があるポリシーは、しきい値チェックの前または並行して、そのプロパティで個別にゲートします。meetsPolicy()は$logIdsの重複を除去しません。独立したログからの SCT を要求するポリシーは、$logIds自体を通じて相異性を確認します。- コンストラクタは入力をそのまま格納します。範囲チェックやフィールド間の整合性チェックは行いません。
- インスタンスは不変です(
final readonly)。すべての読み取りとしきい値チェックは決定的であり、副作用がありません。 - しきい値は運用者のポリシー選択であり、NextPDF は数値を課しません。パッケージのソースは 1 つのエコシステム上の参照点を注記しています。2024 年時点の Chrome の CT ポリシーは、有効期間が 180 日以内の証明書には異なるログからの少なくとも 2 つの SCT を、より長期の証明書には 3 つを期待します。これはブラウザプログラムのポリシーであり、IETF の要件ではありません。
- 想定される配置は署名前ゲートです。署名ワークフローは、チェックが失敗した場合に署名者の構築を拒否します。その根拠は CT 信頼モデルに従います。SCT は証明書を組み込むというログの約束であり、依拠当事者は有効な SCT を欠く証明書を拒否します — RFC 6962 §3。CT バージョン 2.0 も同じモデルを維持します。提出を受け入れたログは SCT を返し、提出者はそれに依拠する前に検証します — RFC 9162 §3。
エッジケースと失敗モード
「エッジケースと失敗モード」という見出しのセクション- ゼロまたは負のしきい値。
meetsPolicy(0)は非負の$validSctsすべてに対してtrueを返します。このメソッドは値を拒否しません。しきい値は少なくとも1を選んでください。 - 拡張は欠落、カウントは正。
$hasSctsExtensionがfalseでも$validSctsがしきい値を満たす場合、meetsPolicy()は依然としてtrueを返します。欠落が失敗となるべき場合、ゲートは$hasSctsExtensionを明示的に確認しなければなりません。機能ページでこのパターンを示しています。 - 重複するログ識別子。 単一ログからの N 個の有効 SCT は、しきい値 N を満たします。しきい値チェックは独立性を主張しません。ログの相異性ポリシーは
$logIdsを検査します。 - 不整合なカウント。
$totalSctsより大きい$validSctsや負のカウントは、与えられたまま格納されます。例外は送出されません。入力の整合性は上流の抽出ステップが担います。 - 未検証のログ識別子文字列。 この型は
$logIdsエントリに 32 バイトや 16 進数の形状を強制しません。不正な形式の識別子はそのまま通過します。 - 例外パスなし。 このサーフェスのどのメソッドも、有効な PHP 型のもとではスローしません。ポリシーチェックの失敗モードは拒否(
false)であり、例外ではありません。他のあらゆる型付き PHP API と同様に、引数型が不一致の場合はstrict_types下で PHPTypeErrorが送出されます。
FIPS モードの動作
「FIPS モードの動作」という見出しのセクションCtValidationResult は暗号計算を一切行いません。ダイジェストを計算せず、署名を検証しません。SCT 署名が有効とカウントされたかどうかは、結果を構築する前に検証を実行したコンポーネントによって上流で決定されます。したがって、セキュリティモジュールと共に文書化されている Enterprise FIPS 140-3 暗号ポリシープロファイルは、この型の動作を変更しません。
| 主張 | 標準 | 条項 |
|---|---|---|
| SCT は証明書を組み込むというログの約束であり、依拠当事者は有効な SCT を欠く証明書を拒否する。 | RFC 6962 | §3 |
| SCT はバージョン、ログ識別子、タイムスタンプ、拡張、およびエントリに対するログ署名を保持する。 | RFC 6962 | §3.2 |
ログ識別子は、DER エンコードされた SubjectPublicKeyInfo に対して計算されたログ公開鍵の SHA-256 ハッシュである。 | RFC 6962 | §3.2 |
埋め込み SCT は、OID 1.3.6.1.4.1.11129.2.4.2 で識別される X.509v3 証明書拡張に載る。 | RFC 6962 | §3.3 |
| CT バージョン 2.0 では、提出を受け入れたログは SCT を返し、提出者はそれに依拠する前に検証する。 | RFC 9162 | §3 |
すべての条項は言い換えであり、NextPDF は規範的テキストを再現しません。NextPDF は Certificate Transparency の適合性または認証について一切主張しません。 NextPDF Enterprise は CT ログ、監査人、またはモニターではありません。証明書をログに提出せず、CT 検証結果を主張しません。この型は呼び出し側の環境が生成したカウントと識別子を表し、呼び出し側が選んだしきい値を評価します。Chrome のようなブラウザ CT プログラムは IETF 規範的要件ではなくエコシステムのポリシーであり、そのようなポリシーを選択して満たすことは運用者の責任です。
開発上の注意
「開発上の注意」という見出しのセクション- この値オブジェクトには依存関係も I/O もありません。ユニットテストではインスタンスを直接構築してください。
- 推奨される境界テスト:しきい値ちょうどの有効カウント、しきい値より 1 つ下、しきい値のカウントで拡張が欠落、および相異性ポリシーに対する重複ログ識別子。
- このクラスは
strict_types=1のもとで、型付きの昇格プロパティとともに宣言されています。誤った引数型は呼び出し側で PHPTypeErrorを送出します。 - このクラスはパッケージの
@since注釈1.0.0を持ち、ソースドキュメントで RFC 6962 と RFC 9162 を参照しています。 $logIdsパラメータはarray<string>として文書化されており、静的解析はプロパティを文字列の配列として扱います。結果を構築する際はその形状を維持してください。- 上流の CT 検証とこのしきい値ゲートを署名者の構築より前に配置し、ログ登録が不十分な証明書が署名操作に到達しないようにしてください。機能ページでワークフローと具体的なゲート例を文書化しています。
- 署名証明書のための Certificate Transparency ポリシー — 機能ページ:ワークフロー、設定、および具体的なポリシーゲート。
- セキュリティ — NextPDF Enterprise — Enterprise セキュリティサーフェスの統合版。
- 署名 — 詳細リファレンス — PAdES B-LT および B-LTA の長期プロデューサー。
- セキュリティ/署名(Core) — Core の CMS 署名者と署名戦略契約。
- Certificate Transparency · SCT — 用語集の項目。
このページは、外部から観測可能な動作とサポートされる公開 API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズム表、ランブックのファイル名、およびチケット接頭辞は対象外です。