メインコンテンツまでスキップ

3.1. ログエントリ

3.1. ログエントリ

誰でも任意のログに証明書を提出できます。ログに記録された各証明書をその発行者に帰属させるため、ログは受け入れ可能なルート証明書のリストを公開しなければなりません (SHALL) (このリストは、主要なブラウザベンダーが信頼するルート証明書の和集合であることが有用です)。提出された各証明書には、受け入れられたルート証明書までの証明書チェーンを検証するために必要なすべての追加証明書が添付されなければなりません (MUST)。ルート証明書自体は、ログサーバーに提出されるチェーンから省略してもかまいません (MAY)。

あるいは、(ルートおよび中間) 証明機関は、発行前に証明書をログに提出してもかまいません。そのために、CAは、ログが発行される証明書に対して有効なエントリを作成するために使用できる事前証明書 (Precertificate) を提出します。事前証明書は、エンドエンティティTBSCertificateに特別な重要な毒拡張 (OID 1.3.6.1.4.1.11129.2.4.3、その extnValue OCTET STRING には ASN.1 NULL データ (0x05 0x00) が含まれます) を追加し (この拡張は、事前証明書が標準的な X.509v3 クライアントによって検証できないことを保証するためです)、結果として得られる TBSCertificate [RFC5280] に次のいずれかで署名することによって、発行される証明書から構築されます。

  • 特別な目的の (CA:true、拡張キー使用法: Certificate Transparency、OID 1.3.6.1.4.1.11129.2.4.4) 事前証明書署名証明書。事前証明書署名証明書は、最終的にエンドエンティティ TBSCertificate に署名してエンドエンティティ証明書を生成する (ルートまたは中間) CA 証明書によって直接認証されなければなりません (MUST) (ログはこれを許可するために標準的な検証ルールを緩和してもかまいませんが、発行される証明書が有効である限りにおいてです)。

  • または、最終的な証明書に署名する CA 証明書。

上記と同様に、事前証明書の提出には、使用される場合は事前証明書署名証明書と、受け入れられたルート証明書までのチェーンを検証するために必要なすべての追加証明書が添付されなければなりません (MUST)。TBSCertificate の署名は、証明機関の証明書を発行する意図を示します。この意図は拘束力があると見なされます (つまり、事前証明書の誤発行は最終証明書の誤発行と同等と見なされます)。各ログは事前証明書の署名チェーンを検証し、対応する TBSCertificate に対して署名付き証明書タイムスタンプを発行します。

ログは、提出されたエンドエンティティ証明書または事前証明書が、提出者によって提供された中間CA証明書のチェーンを使用して、信頼されたルートCA証明書まで遡る有効な署名チェーンを持っていることを検証しなければなりません (MUST)。ログは、CA証明書発行ソフトウェアの癖に対応するために、期限切れ、まだ有効でない、失効している、またはX.509検証ルールに従って完全に有効でない証明書を受け入れてもかまいません (MAY)。ただし、ログは既知のルートCAへの有効なチェーンがない証明書の公開を拒否しなければなりません (MUST)。証明書が受け入れられ、SCTが発行された場合、受け入れるログは、証明書または事前証明書自体を含む、検証に使用されたチェーン全体、およびチェーンの検証に使用されたルート証明書 (提出時に省略されていた場合でも) を保存しなければならず (MUST)、要求に応じて監査のためにこのチェーンを提示しなければなりません (MUST)。このチェーンは、CAが部分的または空のチェーンをログに記録することによって非難を回避することを防ぐために必要です。(注: これは、これらの証明書のスパムを制御するメカニズムが見つかるまで、自己署名証明書およびDANEベースの証明書を効果的に除外します。著者は提案を歓迎します。)

ログ内の各証明書エントリには、次のコンポーネントが含まれていなければなりません (MUST)。

    enum { x509_entry(0), precert_entry(1), (65535) } LogEntryType;

struct {
LogEntryType entry_type;
select (entry_type) {
case x509_entry: X509ChainEntry;
case precert_entry: PrecertChainEntry;
} entry;
} LogEntry;

opaque ASN.1Cert<1..2^24-1>;

struct {
ASN.1Cert leaf_certificate;
ASN.1Cert certificate_chain<0..2^24-1>;
} X509ChainEntry;

struct {
ASN.1Cert pre_certificate;
ASN.1Cert precertificate_chain<0..2^24-1>;
} PrecertChainEntry;

ログは、受け入れるチェーンの長さを制限してもかまいません (MAY)。

「entry_type」はこのエントリのタイプです。このプロトコルバージョンの将来の改訂では、新しい LogEntryType 値が追加される可能性があります。セクション4では、クライアントが未知のエントリタイプをどのように処理すべきかを説明します。

「leaf_certificate」は、監査のために提出されたエンドエンティティ証明書です。

「certificate_chain」は、エンドエンティティ証明書を検証するために必要な追加証明書のチェーンです。最初の証明書は、エンドエンティティ証明書を認証しなければなりません (MUST)。後続の各証明書は、その前の証明書を直接認証しなければなりません (MUST)。最終的な証明書は、ログによって受け入れられたルート証明書でなければなりません (MUST)。

「pre_certificate」は、監査のために提出された事前証明書です。

「precertificate_chain」は、事前証明書の提出を検証するために必要な追加証明書のチェーンです。最初の証明書は、有効な事前証明書署名証明書であってもよく (MAY)、最初の証明書を認証しなければなりません (MUST)。後続の各証明書は、その前の証明書を直接認証しなければなりません (MUST)。最終的な証明書は、ログによって受け入れられたルート証明書でなければなりません (MUST)。