跳到主要内容

3.3. 在TLS握手中包含签名证书时间戳

3.3. 在TLS握手中包含签名证书时间戳

来自至少一个日志的与最终实体证书对应的SCT数据必须包含在TLS握手中,可以通过使用下面描述的X509v3证书扩展,使用类型为"signed_certificate_timestamp"的TLS扩展([RFC5246]的7.4.1.4节),或使用在线证书状态协议(OCSP)装订(也称为"Certificate Status Request"TLS扩展;见[RFC6066]),其中响应包括OID为1.3.6.1.4.1.11129.2.4.5(见[RFC2560])和主体的OCSP扩展:

    SignedCertificateTimestampList ::= OCTET STRING

必须(MUST)包含至少一个SCT。服务器操作员可以(MAY)包含多个SCT。

同样,证书颁发机构可以(MAY)将预证书提交给多个日志,并且所有获得的SCT都可以直接嵌入最终证书中,方法是将SignedCertificateTimestampList结构编码为ASN.1 OCTET STRING,并将结果数据作为X.509v3证书扩展(OID 1.3.6.1.4.1.11129.2.4.2)插入TBSCertificate中。收到证书后,客户端可以重建原始TBSCertificate以验证SCT签名。

嵌入OCSP扩展或X509v3证书扩展中的ASN.1 OCTET STRING的内容如下:

     opaque SerializedSCT<1..2^16-1>;

struct {
SerializedSCT sct_list <1..2^16-1>;
} SignedCertificateTimestampList;

这里,"SerializedSCT"是包含序列化TLS结构的不透明字节串。此编码确保TLS客户端可以单独解码每个SCT(即,如果存在版本升级,过时的客户端仍然可以解析旧的SCT,同时跳过它们不理解版本的新SCT)。

同样,SCT可以嵌入TLS扩展中。有关详细信息,请参见下文。

TLS客户端必须(MUST)实现所有三种机制。服务器必须(MUST)实现三种机制中的至少一种。请注意,现有的TLS服务器通常可以在不修改的情况下使用证书扩展机制。

TLS服务器应该发送来自多个日志的SCT,以防一个或多个日志对客户端不可接受(例如,如果日志因不当行为而被除名或发生密钥泄露)。