飘在云端

东西南北,海角天涯

· 随笔 · · 1342次浏览

Let's Encrypt Authority X3 根证书DST ROOT CA X3到期替换为ISRG Root X1

  • 更新:2021-12-21 ,今天距离到期时间还有6天,再次更新证书,Let 没有签发包含过期的证书链了,此篇文章终结,不再更新。

Let's Encrypt Authority X3 的根证书有 2 个签发机构,一个是 DST ROOT CA X3 ,将于 2021-09-30 到期,另一个是 ISRG Root X1,将于 2035-06-04 到期。

诡异的是,我今天 27 号提前更新证书,Let's 居然给我的还是 DST ROOT CA X3 签发的 中间证书 R3,如图:

请输入图片描述

刚签发就还有 3 天不到的有效期,证书链的根证书到期,其签发的中级证书及其子证书都会全部失效的,所以我这个还有 89 天到期的 Let 证书似乎白签。

不过问题不大,因为 Let 不可能没有解决方案的,访问它的官网,发现 Let's Encrypt Authority X3 的中间证书 R3 存在交叉证书。
还有另一个根证书 ISRG Root X1 签发(吐槽:那你倒是给我 ISRG 签发的 R3 啊,就 3 天不到就要到期,你还给我 DST ROOT CA X3 签的证书,吐了),ISRG Root X1 根 CA 到期时间为 2035 年 6 月 4 日,其签发的交叉证书 R3 到期时间为 2025 年 9 月 16,有最新的交叉证书就好办了,因为交叉证书 R3 的签名私钥完全一样,所以只需要把证书链中的中间证书和根证书重新拼接替换。

一个网站完整的SSL证书格式如下:

    -----BEGIN CERTIFICATE-----

服务器证书(一定有)

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

中间 CA 证书(如果有,本例中有中间证书 R3 )

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

根 CA 证书(一定有)

-----END CERTIFICATE-----

编辑的你的网站SSL证书,用 VScode/vim/hbuilder 等任意编辑器,打开xxxx.pem/xxxxx.cer 的 SSL证书,根据上述的证书格式,做替换,Let 这里是编辑 full_chain.pem 文件, 把文件内容底部的即将到期的 DST ROOT CA X3 根证书替换为 ISRG Root X1,中间证书替换为 ISRG Root X1 签发的交叉证书 R3,然后替换站点的SSL,nginx需要重启一次(不是重载配置文件 nginx -s reload,而是重启nginx: systemctl restart nginx),重新访问网站发现替换的证书链生效了。

这里我直接贴出由 ISRG 签发的 交叉证书 R3 和 自身 ISRG 根 CA 证书,根据上述的证书格式,你们只需要把自己的服务器证书放到最顶部就好了,新建一个任意后缀的文件,如xxx.txt/xxxx.cer/xxxx.pem,把自己的服务器证书提取出来(自己的服务器证书在哪?参见上面的SSL证书格式),粘贴到顶部,接着把下面的内容复制,粘贴到服务器证书结束标志 -----END CERTIFICATE----- 的下面一行即可。

    -----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm
NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg
Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG
/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC
AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB
Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA
FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw
AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw
Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB
gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W
PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl
ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz
CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm
lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4
avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2
yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O
yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids
hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+
HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv
MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX
nLRbwHOoq7hHwg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----

备注:部分win7系统会固执仍旧显示旧证书,浏览器访问仍旧报错,这是因为它们没有安装过相关windows的证书补丁更新,但只是极少数的,测试中还发现,这些陈旧的 win7 系统内置的根证书 并没有 ISRG 根CA证书,也是因为系统太陈旧缺少相关更新导致的,简单解决办法就是点击网站的证书,详细信息,复制到文件,导出到桌面,再双击安装即可导入系统缺失的根证书、证书链,随后刷新页面实时生效。

这样就能省去重复造轮子了,另外我原本以为这个只是小问题,只是想偷懒就没重新申请,但是看了评论区,似乎不妙啊?要到期前还签发旧证书链就不说了,但是到期后还签发旧证书链就...

你们以为这个很难吗,对于 let 来说,只是简单下发个配置的文件的事,把签发证书的模板替换一下就好了,几秒几分钟的事,况且 早在 20 年 1 月份 Let 就注意到这个问题了,并提前在 20 年 9 月 4 日,使用 ISRG Root X1 签发了了 新 R3(2025年到期)。

我倾向于可能是 Let 忘记刷新 签发证书服务器的 CDN 缓存了?要不就是部分证书服务器忘记更换了证书链了,比如中国地区

评论 (10条)
  1. frank

    谢博主,帮大忙了。老电脑用的火狐46导入你给这个根CA以后,浏览器报不安全链接的问题立刻解决了。

    回复
  2. dfzgd

    小白想问一下:把自己的服务器证书提取出来,粘贴到顶部。 服务器证书如何提取

    回复
    1. 博主
      @dfzgd

      这个很简单啊,我也不知道怎么进一步说明了,无论哪家CA,申请下来的证书一定有2个文件,一个xxxx.pem/crt/cet,另一个xxxxx.key,证书就在那个xxxxx.pem/crt/cerm,xxxxx.key是你的私钥

      回复
  3. drew

    申请到过期证书的注意你是否使用的是fullchain.pem,cert.pem是不包含中间证书的

    回复
  4. 现在lets encryption仍然在签发过期的证书链!!!

    回复
    1. 量子涨落 博主
      @dancen

      那在 2021-09-30 以后还签到由过期的根 CA DST ROOT CA X3 签发的 R3 let证书链,来这里回复评论,我们来统计统计要多久 Let 才会发现出了点纰漏要修改,在不反馈的情况下 Let 要多久才能后知后觉😓

      回复
  5. 特意点赞

    必须点赞 👍

    能贴到官方文档里就更好了~

    回复
    1. 量子涨落 博主
      @特意点赞

      我后面问了一些朋友,他们有的人在到期的近期去申请,部分人能签到新r3的交叉证书,部分人还是那个即将过气的r3,无言以对

      回复
    2. 量子涨落 博主
      @特意点赞

      不客气,帮到你就好了,现在已经过了9.30号,不会再签发那个过气证书了,我困惑的是(耿耿于怀):早在2020年9月,也就是提前一年多,let已经预先做了准备了,那时做了交叉证书,他的另一个根ca(2035年到期的那个)对r3进行了签名,到期时间为2025年9月,let那时就应该用那个新r3的交叉签发新的证书了,而不是离根ca还差3天到期时,继续给用户签发旧的根ca证书链,最不济let也应该在根ca到期前三个月全部使用新的r3交叉证书彻底取代

      回复
  6. 👍

    手动点赞👍

    回复