コンテンツにスキップ
getnextpdf.com

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 Enterprisenextpdf/enterprise)に含まれ、Enterprise ティアのライセンスエンベロープで有効化されます。その権利を持たないデプロイメントでは、この機能のクラスは読み込まれません。エディションを比較してライセンスを取得する

シンボルパラメータデフォルト動作戻り値スロー/失敗条件備考
CtValidationResult証明書の SCT 状態を要約する不変な値オブジェクトスローしないfinal readonly。コンストラクタで昇格された 4 つのプロパティはすべて public
CtValidationResult::__constructbool $hasSctsExtensionint $totalSctsint $validSctsarray<string> $logIds与えられた値を、検証や整合なしにそのまま格納新しい CtValidationResult インスタンス@throws の宣言なし。strict_types 下で引数型が不一致の場合、PHP が TypeError を送出昇格された public readonly プロパティ
CtValidationResult::meetsPolicyint $minimumScts = 2有効 SCT 数をしきい値と比較:validScts >= $minimumSctsboolスローしない有効 SCT のみをカウント。ログの相異性や拡張の有無は確認しない
final readonly class CtValidationResult
public function __construct(
public bool $hasSctsExtension,
public int $totalScts,
public int $validScts,
public array $logIds,
) {}
public function meetsPolicy(int $minimumScts = 2): bool

public readonly プロパティ

プロパティ意味
$hasSctsExtensionbool証明書が SCT 拡張を含むかどうか
$totalSctsint拡張内で見つかった SCT の総数
$validSctsint上流で判定された、有効な署名を持つ SCT の数
$logIdsarray<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 を選んでください。
  • 拡張は欠落、カウントは正。 $hasSctsExtensionfalse でも $validScts がしきい値を満たす場合、meetsPolicy() は依然として true を返します。欠落が失敗となるべき場合、ゲートは $hasSctsExtension を明示的に確認しなければなりません。機能ページでこのパターンを示しています。
  • 重複するログ識別子。 単一ログからの N 個の有効 SCT は、しきい値 N を満たします。しきい値チェックは独立性を主張しません。ログの相異性ポリシーは $logIds を検査します。
  • 不整合なカウント。 $totalScts より大きい $validScts や負のカウントは、与えられたまま格納されます。例外は送出されません。入力の整合性は上流の抽出ステップが担います。
  • 未検証のログ識別子文字列。 この型は $logIds エントリに 32 バイトや 16 進数の形状を強制しません。不正な形式の識別子はそのまま通過します。
  • 例外パスなし。 このサーフェスのどのメソッドも、有効な PHP 型のもとではスローしません。ポリシーチェックの失敗モードは拒否(false)であり、例外ではありません。他のあらゆる型付き PHP API と同様に、引数型が不一致の場合は strict_types 下で PHP TypeError が送出されます。

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 のもとで、型付きの昇格プロパティとともに宣言されています。誤った引数型は呼び出し側で PHP TypeError を送出します。
  • このクラスはパッケージの @since 注釈 1.0.0 を持ち、ソースドキュメントで RFC 6962 と RFC 9162 を参照しています。
  • $logIds パラメータは array<string> として文書化されており、静的解析はプロパティを文字列の配列として扱います。結果を構築する際はその形状を維持してください。
  • 上流の CT 検証とこのしきい値ゲートを署名者の構築より前に配置し、ログ登録が不十分な証明書が署名操作に到達しないようにしてください。機能ページでワークフローと具体的なゲート例を文書化しています。

このページは、外部から観測可能な動作とサポートされる公開 API サーフェスのみを文書化します。内部の名前空間パス、ヘルパークラス、メカニズム表、ランブックのファイル名、およびチケット接頭辞は対象外です。