当 Chrome 报告“服务器未提供证书透明度信息”时,究竟是什么意思?

信息安全 证书 铬合金
2021-08-21 23:40:10

在 Chrome 中访问 Gmail 时,如果我单击地址栏中的锁定图标并转到连接选项卡,我会收到一条消息“服务器未提供证书透明度信息”(在 Chrome 45 之前,该消息显示为“本网站的身份已经过 Google Internet Authority G2 的验证,但没有公开审计记录”)。

证书没有公开审核记录到底是什么意思?他们的某些威胁是使用没有公共审计记录的证书的站点是否具有使用具有公共审计记录的证书的站点没有?

Chrome 45 和 Chrome 45 之前的消息示例

4个回答

注意:如果您在这里是因为您的证书不受 Chrome 信任,则不是原因。Chrome 仍会信任没有 CT 信息的证书。如果您的证书不受信任,那么您可能错过了一个额外的因素。

可审计与无审计记录的比较

这与证书透明度的概念有关。

问题

如果满足四个条件,浏览器当前信任证书:(a) 证书由受信任的 CA 签名,(b) 当前时间在证书和签名证书的有效期内(在notBeforenotAfter时间之间),(c) 两者都不是证书或任何签名证书都已被吊销,最后,(d) 证书与所需 URL 的域名匹配。

但这些规则为滥用敞开了大门。受信任的 CA 仍然可以向不应该拥有证书的人颁发证书。这包括受感染的 CA(如DigiNotar)以及像Trustwave这样的 CA ,它们至少颁发了一个中间签名证书,用于执行中间人拦截 SSL 流量。可以在 CAcert对 CA 和 PKI 的风险和威胁事件历史中找到 CA 失败的策划历史。

这里的一个关键问题是 CA 秘密颁发这些证书。在您真正看到证书之前,您不会知道 Trustwave 或 DigiNotar 发布了欺诈性证书,在这种情况下,您可能是犯罪者的目标,而不是真正可以进行任何真正审计的人。为了防止滥用或错误,我们需要 CA公开他们签署的证书的历史。

解决方案

我们处理这个问题的方式是创建一个已颁发证书的日志。这可以由发行人维护,也可以由其他人维护。但重要的一点是 (a) 无法编辑日志,您只能附加新条目,以及 (b) 将证书添加到日志的时间通过适当的时间戳进行验证。当然,一切都经过加密保证以防止篡改,公众可以查看日志的内容,以查看是否为他们知道不应该拥有的域颁发了证书。

如果您的浏览器随后看到应该在日志中但没有的证书,或者在日志中但某些内容不匹配(例如错误的时间戳等),则浏览器可以采取适当的措施。

那么,您在 Chrome 中查看的内容表明您正在查看的证书是否存在公开可听的日志。如果是这样,Chrome 还可以检查是否已创建适当的日志条目以及何时创建。

它的使用范围有多广?

Google在其网站上维护着一份“已知日志”列表在撰写本文时,Google、Digicert、Izenpe 和 Certly 维护了一些日志,每个日志都可以维护任意数量的 CA 的审计跟踪。

Chrome 团队表示,在 2015 年 1 月 1 日之后颁发的 EV 证书都必须具有公共审计跟踪才能被视为 EV。在应用了处理 EV 证书审核日志的经验后,他们将继续向所有证书颁发者推出。

如何查看日志

Google 在其标准透明度报告中添加了证书透明度查询表单,这意味着您现在可以查询您关心的域,以查看这些域的哪些证书显示在透明度日志中。例如,假设 CA 合作,这使您可以查看当前对您的域有效的证书。

在这里寻找它: https: //www.google.com/transparencyreport/https/ct/

请记住,如果您想跟踪给定域名以在证书更新时收到警报,那么您应该直接关注日志。此表单用于进行时间点查询,而不是生成警报。

这是 Google 的一个名为Certificate Transparency的项目,它试图修复 SSL 证书系统的缺陷。

它基本上有三个主要目标。(来自http://www.certificate-transparency.org/what-is-ct

  • 使 CA 无法(或至少非常困难)为域颁发 SSL 证书,而该证书对该域的所有者不可见。
  • 提供一个开放的审核和监控系统,让任何域所有者或 CA 确定证书是否被错误或恶意颁发。
  • (尽可能)保护用户免受错误或恶意颁发的证书的欺骗。

资料来源:http ://www.certificate-transparency.org/certificate-transparency-in-chrome

自 2015 年 1 月 1 日起,所有 EV 证书都必须有公共审计记录(签名证书时间戳)。包含这些记录的最常见方式是通过嵌入式 SCT。此方法在证书文件本身中包含一个新的证书扩展名/OID (1.3.6.1.4.1.11129.2.4.2)。

对于 OV 和 DV 证书,您可以请求 CA 将您的证书添加到其 CT 日志中。我知道 DigiCert 会这样做。最终,这些证书类型可能还需要启用 CT。

为了嵌入 SCT,您需要在 CA 为您的证书启用公共审计记录后重新颁发您希望拥有公共审计记录的任何证书。

Chrome 报告证书“没有公共审计记录”到底是什么意思?

我认为泰勒在解释信息和 CT 方面做得很好,所以没有必要重新散列它。

根据@Colonel Panic 对测试站点的评论,这是最终实体(服务器)证书的样子。注意:您必须使用 TLS 1.0(或更高版本)和服务器名称指示才能获得正确的证书。就是-servername下面这个选项。

$ openssl s_client -connect embed.ct.digicert.com:443 -tls1 -servername embed.ct.digicert.com | \
    openssl x509 -text -noout
depth=1 C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA
verify error:num=20:unable to get local issuer certificate
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:e0:aa:80:19:13:06:8a:28:73:f0:24:29:3e:e4:61
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA
        Validity
            Not Before: Nov 13 00:00:00 2014 GMT
            Not After : Nov 18 12:00:00 2015 GMT
        Subject: C=US, ST=Utah, L=Lehi, O=DigiCert, Inc., CN=embed.ct.digicert.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:9a:64:73:61:53:66:b8:aa:80:c7:cc:53:67:6a:
                    df:da:a9:b1:6a:c5:53:63:55:5f:14:4c:b3:27:d1:
                    3c:e4:0a:1a:e7:16:48:bc:15:46:7e:63:e8:27:3c:
                    c5:28:bd:79:cf:34:d5:9a:67:1e:0c:27:6e:ec:00:
                    5e:69:38:5b:a7:16:4f:b9:09:ec:fc:7e:f2:41:b7:
                    f9:54:f4:6c:c3:22:a6:f5:99:f4:be:9d:64:26:75:
                    9e:b2:b9:16:d7:f5:51:9f:53:ce:74:ca:d6:d6:7a:
                    4a:d4:4d:0e:4d:73:93:30:3c:b9:b8:1d:a0:d8:94:
                    8c:59:7e:82:a4:4c:82:fc:c3:73:7f:b1:56:28:4e:
                    b5:f7:73:53:ac:7b:30:a4:bc:b9:6c:c0:b6:67:0d:
                    19:5e:40:22:11:11:8c:6d:3a:87:47:08:e6:5c:7b:
                    17:7c:64:7a:a1:ff:8c:7c:37:b6:b7:91:2c:c2:90:
                    7e:cc:48:1f:57:1e:f9:db:d4:ac:cf:d9:2b:60:ff:
                    13:2d:88:c5:7e:d8:eb:ec:ed:85:d7:9e:f9:56:32:
                    ca:c1:6b:24:64:9f:63:ba:83:ee:a1:85:4a:e3:ad:
                    45:8c:92:95:3a:e0:80:91:9b:60:b5:75:88:86:4e:
                    0f:81:8c:b5:f4:77:fd:e5:f3:36:f6:33:d6:2b:a0:
                    c4:91
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Authority Key Identifier: 
                keyid:0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2

            X509v3 Subject Key Identifier: 
                88:4F:83:16:87:AD:AE:1E:FF:04:4A:79:66:92:C6:9F:62:69:4F:B1
            X509v3 Subject Alternative Name: 
                DNS:embed.ct.digicert.com
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl3.digicert.com/ssca-sha2-g3.crl

                Full Name:
                  URI:http://crl4.digicert.com/ssca-sha2-g3.crl

            X509v3 Certificate Policies: 
                Policy: 2.16.840.1.114412.1.1
                  CPS: https://www.digicert.com/CPS

            Authority Information Access: 
                OCSP - URI:http://ocsp.digicert.com
                CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

            X509v3 Basic Constraints: critical
                CA:FALSE
            CT Precertificate SCTs: 
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:
                                3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10
                    Timestamp : Nov 13 16:57:03.632 2014 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:06:14:6A:E3:6D:0F:84:5D:6A:98:E7:29:
                                94:80:8B:F2:A4:23:85:68:4E:F9:BC:50:7C:FF:7B:94:
                                EB:20:54:82:02:21:00:91:63:83:FD:F6:31:5E:38:08:
                                AF:A7:5E:00:B7:0B:9B:1F:8B:FD:4D:7E:49:3C:43:E6:
                                64:E5:4B:F9:60:D7:89
                Signed Certificate Timestamp:
                    Version   : v1(0)
                    Log ID    : 68:F6:98:F8:1F:64:82:BE:3A:8C:EE:B9:28:1D:4C:FC:
                                71:51:5D:67:93:D4:44:D1:0A:67:AC:BB:4F:4F:FB:C4
                    Timestamp : Nov 13 16:57:03.619 2014 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:61:4F:69:89:80:6A:62:2D:8E:A2:D0:24:
                                A5:E2:1D:74:67:51:77:C1:9B:DE:99:DE:16:56:2B:02:
                                77:A8:25:49:02:21:00:D3:41:6C:5D:88:40:F0:7A:FE:
                                E0:25:09:86:71:63:86:49:54:DD:96:E4:B5:9B:4A:84:
                                65:A9:25:12:F1:B7:E0
    Signature Algorithm: sha256WithRSAEncryption
         62:0c:d1:51:08:8a:a3:d1:df:bc:53:ba:e9:58:67:41:ea:5f:
         e3:51:f2:0b:9d:24:b4:77:6a:cf:96:ff:c5:ce:1c:55:1e:77:
         8a:49:46:7d:19:ef:52:4f:d3:24:b1:f2:95:60:67:40:d4:d1:
         f4:27:e4:66:55:45:c6:a5:51:a6:87:d0:09:af:f6:48:9b:df:
         24:c9:28:ad:47:b9:f6:a3:86:cb:64:64:3d:90:92:0e:94:f7:
         d2:8b:d6:79:b4:df:f2:3f:f5:6e:ea:08:b3:b0:37:87:a3:30:
         a7:f1:db:b7:86:b2:39:64:35:93:ee:5f:7b:01:51:5f:b1:e1:
         e0:d1:5d:a6:e6:a3:53:3f:66:97:16:8f:18:c4:fa:fc:8e:85:
         79:a1:95:7b:69:0b:f5:a4:92:1f:04:cf:ed:f6:95:e3:8f:b4:
         2a:6a:be:0c:a2:b6:53:99:5d:50:78:23:1c:fb:cb:2e:1d:be:
         b5:8d:83:2e:08:96:f8:c9:be:96:13:ed:61:0f:cf:57:44:ff:
         3a:d5:10:b0:bd:08:1f:27:c4:cf:97:17:e8:6a:62:bc:6d:e9:
         64:39:a0:36:79:d6:02:84:b7:47:26:9b:5d:b1:92:aa:f1:36:
         1a:31:9e:27:f2:25:54:89:17:ac:56:54:b0:e0:41:67:e4:b8:
         7b:e0:2c:88

如果您正在运行私有 PKI,我不清楚如何实际创建其中之一。OpenSSL 中支持 OID:

$ grep -R "1.3.6.1.4.1.11129.2.4.2" *
crypto/objects/obj_dat.h:951,   /* OBJ_ct_precert_scts    1 3 6 1 4 1 11129 2 4 2 */
crypto/objects/objects.txt:1 3 6 1 4 1 11129 2 4 2  : ct_precert_scts   : CT Precertificate SCTs

和:

$ grep -R ct_precert_scts *
crypto/objects/obj_dat.h:0x2B,0x06,0x01,0x04,0x01,0xD6,0x79,0x02,0x04,0x02,/* [6191] OBJ_ct_precert_scts */
crypto/objects/obj_dat.h:{"ct_precert_scts","CT Precertificate SCTs",NID_ct_precert_scts,10,
crypto/objects/obj_dat.h:951,   /* "ct_precert_scts" */
crypto/objects/obj_dat.h:951,   /* OBJ_ct_precert_scts    1 3 6 1 4 1 11129 2 4 2 */
crypto/objects/obj_mac.num:ct_precert_scts      951
crypto/objects/objects.txt:1 3 6 1 4 1 11129 2 4 2  : ct_precert_scts   : CT Precertificate SCTs
crypto/x509v3/v3_scts.c:    {NID_ct_precert_scts, 0, NULL,
include/openssl/obj_mac.h:#define SN_ct_precert_scts    "ct_precert_scts"
include/openssl/obj_mac.h:#define LN_ct_precert_scts    "CT Precertificate SCTs"
include/openssl/obj_mac.h:#define NID_ct_precert_scts    951
include/openssl/obj_mac.h:#define OBJ_ct_precert_scts             1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L

所以有演示/显示支持,但没有关于如何在 OpenSSL 的自文档代码中使用它的示例。通常,自我文档<openssl src>/apps通过子命令中的功能使用方式显示在目录中。

OpenSSL 邮件列表上有一个关于它的悬而未决的问题:如何将 CT Precertificate SCT 添加到服务器证书?.