0

证书透明度(CT)日志

 2 years ago
source link: https://letsencrypt.org/zh-cn/docs/ct-logs/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

证书透明度(CT)日志

最后更新:2020年2月25日

| 所有文档

证书透明度(CT)日志是用于记录和监视 TLS 证书颁发的系统。CT 极大地增强了人们监控和研究证书颁发的能力,这些功能使 CA 生态系统和 Web 安全性得到了大量改进。因此,CT 正迅速成为关键基础设施。

Let's Encrypt 将我们发出的所有证书提交给 CT 日志。我们还运营着两个年度分片(annually sharded)的CT日志,分别名为 Oak 和Testflume。欢迎所有被公共信任的证书颁发机构提交证书至我们的日志。 我们的CT日志中已包含许多证书颁发机构的根证书。 若您的根证书没有包含在我们的日志中,请通过电子邮件联系我们以将新的根证书添加到我们的日志中。

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

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

详见"Let's Encrypt如何运行CT日志"

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

CT 日志服务器

生产环境日志

  • Oak已被添加至苹果谷歌的CT项目中。
  • 我们生产环境的API端点将证书提交至此处。
    • 名称: Oak 2019
      链接: https://oak.ct.letsencrypt.org/2019
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFkqNKRuZ+Z8IOsnNJrUZ8gwp+KKGOdQrJ/HKhSadK/SJuoCc9+dxQ7awpmWIMr9SKcQeG5uRzG1kVSyFN4Wfcw==
      Log 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
      Window Start: 2019-01-01T00:00Z
      Window End: 2020-01-07T00:00Z

      State: Rejected - Shard Expired

    • 名称: Oak 2020
      链接: https://oak.ct.letsencrypt.org/2020
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfzb42Zdr/h7hgqgDCo1vrNJqGqbcUvJGJEER9DDqp19W/wFSB0l166hD+U5cAXchpH8ZkBNUuvOHS0OnJ4oJrQ==
      Log 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
      Window Start: 2020-01-01T00:00Z
      Window End: 2021-01-07T00:00Z

      State: Rejected - Shard Expired

    • 名称: Oak 2021
      链接: https://oak.ct.letsencrypt.org/2021
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAELsYzGMNwo8rBIlaklBIdmD2Ofn6HkfrjK0Ukz1uOIUC6Lm0jTITCXhoIdjs7JkyXnwuwYiJYiH7sE1YeKu8k9w==
      Log 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
      Window Start: 2021-01-01T00:00Z
      Window End: 2022-01-07T00:00Z

      State: Usable

    • 名称: Oak 2022
      链接: https://oak.ct.letsencrypt.org/2022
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhjyxDVIjWt5u9sB/o2S8rcGJ2pdZTGA8+IpXhI/tvKBjElGE5r3de4yAfeOPhqTqqc+o7vPgXnDgu/a9/B+RLg==
      Log 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
      Window Start: 2022-01-01T00:00Z
      Window End: 2023-01-07T00:00Z

      State: Usable

    • 名称: Oak 2023
      链接: https://oak.ct.letsencrypt.org/2023
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsz0OeL7jrVxEXJu+o4QWQYLKyokXHiPOOKVUL3/TNFFquVzDSer7kZ3gijxzBp98ZTgRgMSaWgCmZ8OD74mFUQ==
      Log 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
      Window Start: 2023-01-01T00:00Z
      Window End: 2024-01-07T00:00Z

      State: Pending

测试环境日志

  • 这些日志服务器中的SCT不应该被添加到被公共信任的证书中。
  • Let's Encrypt的生产和测试ACME端点环境都向Testflume提交证书,但是生产环境不使用该服务器产生的SCT。
  • 我们将在此处测试Trilliancertificate-transparency-go的新版本后部署到生产环境中。
  • Testflume接受的根证书列表包括所有Oak接受的根证书及其他测试用根证书。
  • 其他证书颁发机构可以使用Testflume进行测试。
    • 名称: Testflume 2019
      链接: https://testflume.ct.letsencrypt.org/2019
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAg3+vFOesFW51rKECekioAt9Zo50atRoOJ0qLxF7DIEHsHneXLEpgO1WMreleRy1vEbUJD7TXoH9r8qSDGvyew==
      Log ID: 84:9F:5F:7F:58:D2:BF:7B:54:EC:BD:74:61:1C:EA:45:C4:9C:98:F1:D6:48:1B:C6:F6:9E:8C:17:4F:24:F3:CF
      Window Start: 2019-01-01T00:00Z
      Window End: 2020-01-07T00:00Z
    • 名称: Testflume 2020
      链接: https://testflume.ct.letsencrypt.org/2020
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjdjcoKpeBShHgHvRm3BxD5+l+eHZudv3KmD5SDcLcI01Vj5TDTmxanQKCgpvm9pfnfB6URMQV3hhU1I02jRoRw==
      Log ID: C6:3F:22:18:C3:7D:56:A6:AA:06:B5:96:DA:8E:53:D4:D7:15:6D:1E:9B:AC:8E:44:D2:20:2D:E6:4D:69:D9:DC
      Window Start: 2020-01-01T00:00Z
      Window End: 2021-01-07T00:00Z
    • 名称: Testflume 2021
      链接: https://testflume.ct.letsencrypt.org/2021
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdCLoJNt1QcNa7sNDp7g7oTJ+o/UIYEM6N/IZWT+dhdqtJZC+AODJ/4exdOwG04B4K6WrN1VB2ELKQIc/wU1lCw==
      Log ID: 03:ED:F1:DA:97:76:B6:F3:8C:34:1E:39:ED:9D:70:7A:75:70:36:9C:F9:84:4F:32:7F:E9:E1:41:38:36:1B:60
      Window Start: 2021-01-01T00:00Z
      Window End: 2022-01-07T00:00Z
    • 名称: Testflume 2022
      链接: https://testflume.ct.letsencrypt.org/2022
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjy/rXcABuf0yhrm1+XgjDnh4XPD7vfMoyJOyT+KA+c2zuXVR98yQmp/Bl5ZFdGFwJuFcVrCw7IDo0EGKs7UCww==
      Log ID: 23:27:EF:DA:35:25:10:DB:C0:19:EF:49:1A:E3:FF:1C:C5:A4:79:BC:E3:78:78:36:0E:E3:18:CF:FB:64:F8:C8
      Window Start: 2022-01-01T00:00Z
      Window End: 2023-01-07T00:00Z
    • 名称: Testflume 2023
      链接: https://testflume.ct.letsencrypt.org/2023
      公钥: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8aLpnumqeISmQEB3hKPgtPJQG3jP2IftfaUQ4WPUihNBwUOEk1R9BMg5RGQwebWSsRlGIRiCvtE97Q45Vh3mqA==
      Log ID: 55:34:B7:AB:5A:6A:C3:A7:CB:EB:A6:54:87:B2:A2:D7:1B:48:F6:50:FA:17:C5:19:7C:97:A0:CB:20:76:F3:C6
      Window Start: 2023-01-01T00:00Z
      Window End: 2024-01-07T00:00Z

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

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

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

$ echo | \
openssl s_client \
    -connect "letsencrypt.org":443 \
    -servername "letsencrypt.org" \
    -verify_hostname "letsencrypt.org" 2>/dev/null | \
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的签名。 看下文以获取更多关于签名的信息。

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

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

$ base64 -d <<< "5xLysDd+GmL7jskMYYTx6ns3y1YdESZb8+DzS/JBVG4=" | xxd -p -c 64 | sed -e 's/../&:/g' -e 's/:$//' | tr '[:lower:]' '[:upper:]'
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详解以进一步解码该字段

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK