关于 Let's Encrypt 免费证书过期的事情(-107(token check timeout)微信公众号无法验证http通过

起因:开发反馈api接口无法在微信公众号验证通过

排查问题:
由于一开始是http 301 到 https,所以使用http和https的方法验证无法通过,
然后接触了301调整开启了80 443都能直接访问接口,得到的结果是http可以校验通过,那么得到结论是服务没有问题,可能出现的问题就是https
于是使用17ce https://17ce.com 站点测试了全球访问情况基本都可以正常返回200,还是没找到问题,
后来使用myssl https://myssl.com站点去测试,测试报告是证书不可信,出了疑问,浏览器访问没有报错,为啥检测会有问题
既然是证书问题,最简单就是换个证书提供商,果然换了证书,https可以通过了

脑海出现了几个疑问点(-107 问题出现可能原因:1.网络不通,2.dns解析问题,3.内网nat问题,3.泛证书证书问题或者需要使用单域名证书才行)
后来看了Let's Encrypt的相关公告,才发觉可能是微信公众号的检测机制的根域名证书没有更新或者是我证书根证书版本太旧:

AWS 加密证书到期
[信息上次更新时间:太平洋夏令时间下午 5:10]:我们想为您提供更多关于今天早些时候发生的 Let's Encrypt 证书到期信息,即 2021 年 9 月 30 日。受影响的客户将看到尝试连接到某些网站或 API 失败并出现错误如“连接失败”或“颁发的证书已过期”
Let's Encrypt 是一个证书颁发机构,为当今互联网上运行的许多网站和服务提供 TLS 证书。作为证书颁发机构,Let's Encrypt 提供了一个证书链,Web 浏览器和应用程序使用它来验证网站在建立安全 TLS 连接时使用的证书。与所有证书一样,这些证书链都有一个到期日期。为了准备到期
Let's Encrypt 一直使用旧证书(2021 年 9 月 30 日到期)和新证书对其证书链进行双重签名。这是证书颁发机构处理证书过期的一种方式。虽然这种方法确保了许多网站和应用程序不受 Let's Encrypt 证书链到期的影响,OpenSSL 存在一个已知问题,即未正确处理证书链的双重签名
1.1.0 之前的 OpenSSL 版本无法正确处理双链,如果其中一个证书过期,则认为该链无效。可以找到来自 OpenSSL 博客的其他信息在这里。

对于看到 AWS 服务(包括 AWS Lambda、AWS Elastic Beanstalk、Amazon OpsWorks 和 Elastic MapReduce (EMR))影响的客户,我们正在努力对受影响的服务应用必要的修复程序。我们已经为受影响的 Amazon Linux 发行版发布了更新的 RPM。运行 AL 2012 或 AL2 的客户可以使用以下命令从 CDN 进行更新:

Amazon Linux 1:
sudo yum install https://cdn.amazonlinux.com/patch/ca-certificates-update-2021-09-30/ca-证书-2018.2.22-65.1.24.amzn1.noarch.rpm

Amazon Linux 2:
sudo yum install https://cdn.amazonlinux.com/patch/ca-certificates-update-2021-09-30/ca-certificates- 2021.2.50-72.amzn2.0.1.noarch.rpm

这些命令安装替换本地信任存储的 RPM。如果出于某种原因希望就地修改系统,则可以使用以下命令:

Amazon Linux 1:
sudo sed -i'' '/Alias: DST Root CA X3/,/No Rejected Uses./d' / usr/share/pki/ca-trust-source/ca-bundle.trust.crt
sudo update-ca-trust

Amazon Linux 2:
sudo sed -i'' '/DST Root CA X3/,/\[p11-kit- object-v1\]/d' /usr/share/pki/ca-trust-source/ca-bundle.trust.p11-kit
sudo update-ca-trust

将 RPM 上传到存储库仍在进行中,因此启动的新实例不会自动更新。我们正在积极致力于发布更新的 Amazon Linux AMI。发布这些 AMI 后,发布自定义 AMI(ECS、EKS、EMR、Elastic Beanstalk)的服务将开始使用其 AMI 的更新版本。

一些运行 .NET 3.1 和 Ruby 2.7 的 Lambda 客户遇到与运行 1.1.0 之前的 Open SSL 版本相关的提升错误。我们正在努力解决这个问题。

造成的影响:
服务端:是用的是Let's Encrypt 3个月证书,可能导致低版本的ca-certificates的客户端无法https验证通过,导致无法访问
客户端:低版本的ca-certificates的客户端无法https验证通过使用Let's Encrypt 3个月证书的网站

类似使用Let's Encrypt 证书的站点:清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/

未更新ca-certificates的客户端,无法wget成功
yum install ca-certificates 更新了ca根证书,即可wget成功
posted @ 2021-10-12 03:02  运维之爪  阅读(561)  评论(0编辑  收藏  举报