最后更新:Jun 17, 2022 | 所有文档

注意:本页面有较新的英文版本。 (Sep 25, 2023) 阅读英文页面

证书透明度 (CT)是用于记录和监控 TLS 证书颁发的系统。 CT 极大地增强了每个人监控和研究证书颁发的能力,这些能力为 CA 生态系统和 Web 安全带来了许多改进。 因此,CT 正迅速成为关键基础设施。

Let’s Encrypt 将我们发出的所有证书提交给 CT 日志。 我们还运营着两个年度分片(annually sharded)的CT日志,分别名为Oak和Sapling。 欢迎所有被公共信任的证书颁发机构提交证书至我们的日志。 我们的CT日志中已包含许多证书颁发机构的根证书。 如果您经营一个证书颁发机构并且您的颁发证书不在我们接受的颁发证书列表中,请在此处提交问题(issue)。

在我们的社区论坛的CT公告类别中开启通知提醒,以查看有关CT日志的主要公告。

资金来源

我们要感谢以下合作伙伴慷慨赞助 Let’s Encrypt 的 CT 日志。 如果您的组织希望帮助我们继续这项工作,请考虑捐赠或成为赞助商

Sectigo

架构

详见“Let’s Encrypt如何运行CT日志”

日志监控

Let’s Encrypt 开发了一个名为 CT Woodpecker 的开源 CT 日志监控工具。 我们使用此工具来监控我们自己的日志的稳定性和合规性,我们希望其他人也会发现它的实用性。

CT 日志服务器

可以在此处找到有关 CT 日志进程所经历的各种生命周期状态的信息。

生产环境日志

  • Oak已被添加至苹果谷歌的CT项目中。
  • 我们生产环境的API端点将证书提交至此处。
    • 名称: Oak 2019
      链接: https://oak.ct.letsencrypt.org/2019
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFkqNKRuZ+Z8IOsnNJrUZ8gwp+KKGOdQrJ/HKhSadK/SJuoCc9+dxQ7awpmWIMr9SKcQeG5uRzG1kVSyFN4Wfcw==
      日志 ID: 65:9B:33:50:F4:3B:12:CC:5E:A5:AB:4E:C7:65:D3:FD:E6:C8:82:43:77:77:78:E7:20:03:F9:EB:2B:8C:31:29
      开始窗口: 2019-01-01T00:00Z
      结束窗口: 2020-01-07T00:00Z
      状态: Rejected - Shard Expired
    • 名称: Oak 2020
      链接: https://oak.ct.letsencrypt.org/2020
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfzb42Zdr/h7hgqgDCo1vrNJqGqbcUvJGJEER9DDqp19W/wFSB0l166hD+U5cAXchpH8ZkBNUuvOHS0OnJ4oJrQ==
      日志 ID: E7:12:F2:B0:37:7E:1A:62:FB:8E:C9:0C:61:84:F1:EA:7B:37:CB:56:1D:11:26:5B:F3:E0:F3:4B:F2:41:54:6E
      开始窗口: 2020-01-01T00:00Z
      结束窗口: 2021-01-07T00:00Z
      状态: Rejected - Shard Expired
    • 名称: Oak 2021
      链接: https://oak.ct.letsencrypt.org/2021
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELsYzGMNwo8rBIlaklBIdmD2Ofn6HkfrjK0Ukz1uOIUC6Lm0jTITCXhoIdjs7JkyXnwuwYiJYiH7sE1YeKu8k9w==
      日志 ID: 94:20:BC:1E:8E:D5:8D:6C:88:73:1F:82:8B:22:2C:0D:D1:DA:4D:5E:6C:4F:94:3D:61:DB:4E:2F:58:4D:A2:C2
      开始窗口: 2021-01-01T00:00Z
      结束窗口: 2022-01-07T00:00Z
      状态: Rejected - Shard Expired
    • 名称: Oak 2022
      链接: https://oak.ct.letsencrypt.org/2022
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhjyxDVIjWt5u9sB/o2S8rcGJ2pdZTGA8+IpXhI/tvKBjElGE5r3de4yAfeOPhqTqqc+o7vPgXnDgu/a9/B+RLg==
      日志 ID: DF:A5:5E:AB:68:82:4F:1F:6C:AD:EE:B8:5F:4E:3E:5A:EA:CD:A2:12:A4:6A:5E:8E:3B:12:C0:20:44:5C:2A:73
      开始窗口: 2022-01-01T00:00Z
      结束窗口: 2023-01-07T00:00Z
      状态: Rejected - Shard Expired
    • 名称: Oak 2023
      链接: https://oak.ct.letsencrypt.org/2023
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsz0OeL7jrVxEXJu+o4QWQYLKyokXHiPOOKVUL3/TNFFquVzDSer7kZ3gijxzBp98ZTgRgMSaWgCmZ8OD74mFUQ==
      日志 ID: B7:3E:FB:24:DF:9C:4D:BA:75:F2:39:C5:BA:58:F4:6C:5D:FC:42:CF:7A:9F:35:C4:9E:1D:09:81:25:ED:B4:99
      开始窗口: 2023-01-01T00:00Z
      结束窗口: 2024-01-07T00:00Z
      状态: Usable
    • 名称: Oak 2024h1
      链接: https://oak.ct.letsencrypt.org/2024h1
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVkPXfnvUcre6qVG9NpO36bWSD+pet0Wjkv3JpTyArBog7yUvuOEg96g6LgeN5uuk4n0kY59Gv5RzUo2Wrqkm/Q==
      日志 ID: 3B:53:77:75:3E:2D:B9:80:4E:8B:30:5B:06:FE:40:3B:67:D8:4F:C3:F4:C7:BD:00:0D:2D:72:6F:E1:FA:D4:17
      开始窗口: 2023-12-20T00:00Z
      结束窗口: 2024-07-20T00:00Z
      状态: Usable
    • 名称: Oak 2024h2
      链接: https://oak.ct.letsencrypt.org/2024h2
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE13PWU0fp88nVfBbC1o9wZfryUTapE4Av7fmU01qL6E8zz8PTidRfWmaJuiAfccvKu5+f81wtHqOBWa+Ss20waA==
      日志 ID: 3F:17:4B:4F:D7:22:47:58:94:1D:65:1C:84:BE:0D:12:ED:90:37:7F:1F:85:6A:EB:C1:BF:28:85:EC:F8:64:6E
      开始窗口: 2024-06-20T00:00Z
      结束窗口: 2025-01-20T00:00Z
      状态: Usable
    • 名称: Oak 2025h1
      链接: https://oak.ct.letsencrypt.org/2025h1
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKeBpU9ejnCaIZeX39EsdF5vDvf8ELTHdLPxikl4y4EiROIQfS4ercpnMHfh8+TxYVFs3ELGr2IP7hPGVPy4vHA==
      日志 ID: A2:E3:0A:E4:45:EF:BD:AD:9B:7E:38:ED:47:67:77:53:D7:82:5B:84:94:D7:2B:5E:1B:2C:C4:B9:50:A4:47:E7
      开始窗口: 2024-12-20T00:00Z
      结束窗口: 2025-07-20T00:00Z
      状态: Pending
    • 名称: Oak 2025h2
      链接: https://oak.ct.letsencrypt.org/2025h2
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtXYwB63GyNLkS9L1vqKNnP10+jrW+lldthxg090fY4eG40Xg1RvANWqrJ5GVydc9u8H3cYZp9LNfkAmqrr2NqQ==
      日志 ID: 0D:E1:F2:30:2B:D3:0D:C1:40:62:12:09:EA:55:2E:FC:47:74:7C:B1:D7:E9:30:EF:0E:42:1E:B4:7E:4E:AA:34
      开始窗口: 2025-06-20T00:00Z
      结束窗口: 2026-01-20T00:00Z
      状态: Pending

测试环境日志

  • 这些日志服务器中的SCT不应该被添加到被公共信任的证书中。
  • Let’s Encrypt的生产和测试ACME端点环境都向Sapling提交证书,但是生产环境不使用该服务器产生的SCT。
  • 我们将在此处测试Trilliancertificate-transparency-go的新版本,之后部署到生产环境中。
  • Sapling接受的根证书列表包括所有Oak接受的根证书及其他测试用根证书。
  • 其他证书颁发机构可以使用Sapling进行测试。
    • 名称: Sapling 2022h2
      链接: https://sapling.ct.letsencrypt.org/2022h2
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6m0gtMM2pcVTxVjkztm/ByNrF32xacdVnbsYwlzwtqN0vOwqcXLtPkfYqH+q93hlJwEBsX1MnRXDdlMHkkmZJg==
      日志 ID: 23:2D:41:A4:CD:AC:87:CE:D9:F9:43:F4:68:C2:82:09:5A:E0:9D:30:D6:2E:2F:A6:5D:DC:3B:91:9C:2E:46:8F
      开始窗口: 2022-06-15T00:00Z
      结束窗口: 2023-01-15T00:00Z

    • 名称: Sapling 2023h1
      链接: https://sapling.ct.letsencrypt.org/2023h1
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE09jAcGbw5CDCK2Kg0kkmmDydfDfZAA8K64BufU37yx3Jcy/ePy1EjAi2wUPVJ0xsaNMCU37mh+fBV3+K/cSG8A==
      日志 ID: C1:83:24:0B:F1:A4:50:C7:6F:BB:00:72:69:DC:AC:3B:E2:2A:48:05:D4:db:E0:49:66:C3:C8:ab:C4:47:B0:0C
      开始窗口: 2022-12-15T00:00Z
      结束窗口: 2023-07-15T00:00Z

    • 名称: Sapling 2023h2
      链接: https://sapling.ct.letsencrypt.org/2023h2
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbdCykRsTPRgfjKVQvINRLJk3gy+2qNKOU48bo/sWO0ko75S92C+PBDxsqMEd0YpCYYLogCt2LAK/U4H7UwHsjA==
      日志 ID: ED:AB:9D:1D:DD:83:73:95:9F:F5:2A:88:E4:6B:B4:BC:C3:C4:CC:4D:76:8A:60:CC:FF:4E:36:2D:7F:B8:D6:68
      开始窗口: 2023-06-15T00:00Z
      结束窗口: 2024-01-15T00:00Z

    • 名称: Sapling 2024h1
      链接: https://sapling.ct.letsencrypt.org/2024h1
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Yn4OKJQuwEwo1/BeVBh1NYkQBnS8sYmMfQr/VdXOGqPcbwcpw0TtjJBYmn8FA+ZT7hnt7OfF4RTjLNW3bWOkw==
      日志 ID: AA:6C:B0:C5:C9:F4:C4:9D:8D:8E:A9:0C:39:17:E0:D7:0A:D9:22:10:BF:05:7F:41:50:93:82:CC:35:0C:98:46
      开始窗口: 2023-12-15T00:00Z
      结束窗口: 2024-07-15T00:00Z

    • 名称: Sapling 2024h2
      链接: https://sapling.ct.letsencrypt.org/2024h2
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWipy8ZdRGs2Y5tBb8h8c4UUREnT/YMbm+FEUQBBScf85txhGRHNN/sNN0L/KDiGu/GsrOBCkDruDfHkD42eZXQ==
      日志 ID: 85:1B:AE:8E:EE:33:C1:B9:87:3F:C4:9C:7A:7C:27:65:66:3B:6B:80:63:03:04:0A:EC:A6:C1:11:A5:AB:E9:D7
      开始窗口: 2024-06-15T00:00Z
      结束窗口: 2025-01-15T00:00Z

日志操作

要枚举特定CT日志服务器包含的根证书,您可以在所选终端中运行以下命令:

  1. $ for i in $(curl -s https://oak.ct.letsencrypt.org/2020/ct/v1/get-roots | jq -r '.certificates[]'); do
  2. echo '------'; base64 -d <<< "${i}" | openssl x509 -inform der -noout -issuer -serial
  3. done

证书颁发机构通常负责将证书提交至CT日志服务器。 如果您想尝试提交证书至CT日志服务器, 请先从我们喜欢的网站获取PEM格式的证书。 请复制以下代码块并粘贴到您的终端内。

  1. $ echo | \
  2. openssl s_client \
  3. -connect "letsencrypt.org":443 \
  4. -servername "letsencrypt.org" \
  5. -verify_hostname "letsencrypt.org" 2>/dev/null | \
  6. sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > example.crt

在提交证书前,必须按特殊结构对该证书进行JSON编码。 您可以使用https://crt.sh/gen-add-chain提供的JSON生成器来执行此任务。 crt.sh将返回一个JSON捆绑包。 请将该JSON包下载到您的计算机内,您也可以按需求重命名该文件, 之后使用以下命令来添加证书链(RFC 6962 第4章第1小节)以便将证书提交至CT日志。 该步骤会输出一个实际是SCT的签名。 继续阅读以获取更多关于签名的信息。

  1. $ curl \
  2. -X POST \
  3. --data @example-json-bundle.json \
  4. -H "Content-Type: application/json" \
  5. -H "User-Agent: lets-encrypt-ct-log-example-1.0" \
  6. https://oak.ct.letsencrypt.org/2020/ct/v1/add-chain
  7. {"sct_version":0,"id":"5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=","timestamp":1576689972016,"extensions":"","signature":"BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E"}

为了确认CT日志是由Oak 2020碎片签名的,我们使用上面命令中的id字段,并通过以下命令运行它。 结果将输出CT日志的日志ID。

  1. $ base64 -d <<< "5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
  2. E7:12:F2:B0:37:7E:1A:62:FB:8E:C9:0C:61:84:F1:EA:7B:37:CB:56:1D:11:26:5B:F3:E0:F3:4B:F2:41:54:6E

我们可以使用签名字段验证证书是否已提交到日志服务器。 您可以使用我们的SCT详解以进一步解码该字段。

  1. $ base64 -d <<< "BAMARzBFAiEA4OmuTcft9Jq3XLtcdZz9XinXCvYEY1RdSQICXayMJ+0CIHuujkKBLmQz5Cl/VG6C354cP9gxW0dfgMWB+A2yHi+E" | xxd -p -c 16 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
  2. 04:03:00:47:30:45:02:21:00:E0:E9:AE:4D:C7:ED:F4
  3. 9A:B7:5C:BB:5C:75:9C:FD:5E:29:D7:0A:F6:04:63:54
  4. 5D:49:02:02:5D:AC:8C:27:ED:02:20:7B:AE:8E:42:81
  5. 2E:64:33:E4:29:7F:54:6E:82:DF:9E:1C:3F:D8:31:5B
  6. 47:5F:80:C5:81:F8:0D:B2:1E:2F:84