macOS我自己电脑上的curl也是同样的问题,目前没找到好的自动修改的方式 。不过找到了系统上的ca文件路径 。
先备份下文件:
sudo cp /etc/ssl/cert.pem ~/etc-ssl-cert.pem-20200601之后,运行以下命令可以禁用掉过期的CA证书:
sudo sed -i "/^### AddTrust/,/^-.*END/ s/^/#/g" /etc/ssl/cert.pem上面是注释掉,当然你也可以直接编辑文件删除这些行 。
验证修改更新完ca配置后,再次执行curl 命令去访问之前的网站:
$ curl https://sentry.xxx.com这次访问正常了.
其他问题当时出现问题时,还有另外一个现象,就是用curl访问其他网站(如,bing.com、qq.com)都是正常的. 怀疑是不是目标域名使用的证书链不一样,导致了只有我们业务域名出现了问题呢?
验证下猜想使用openssl 检查下我们业务域名证书的链
# openssl s_client-connect sentry.xxx.com:443CONNECTED(00000003)depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authorityverify return:1depth=1 C = LV, L = Riga, O = GoGetSSL, CN = GoGetSSL RSA DV CAverify return:1depth=0 OU = Domain Control Validated, OU = GoGetSSL Wildcard SSL, CN = *.xxx.comverify return:1---Certificate chain 0 s:/OU=Domain Control Validated/OU=GoGetSSL Wildcard SSL/CN=*.xxx.comi:/C=LV/L=Riga/O=GoGetSSL/CN=GoGetSSL RSA DV CA 1 s:/C=LV/L=Riga/O=GoGetSSL/CN=GoGetSSL RSA DV CAi:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority 2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authorityi:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root---Server certificate省略...在检测下上面说的其他网站bing.com:
$ openssl s_client-connect cn.bing.com:443CONNECTED(00000003)depth=2 C = IE, O = Baltimore, OU = CyberTrust, CN = Baltimore CyberTrust Rootverify return:1depth=1 C = US, ST = Washington, L = Redmond, O = Microsoft Corporation, OU = Microsoft IT, CN = Microsoft IT TLS CA 2verify return:1depth=0 CN = www.bing.comverify return:1---Certificate chain 0 s:/CN=www.bing.comi:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=Microsoft IT/CN=Microsoft IT TLS CA 2 1 s:/C=US/ST=Washington/L=Redmond/O=Microsoft Corporation/OU=Microsoft IT/CN=Microsoft IT TLS CA 2i:/C=IE/O=Baltimore/OU=CyberTrust/CN=Baltimore CyberTrust Root---省略...我又测试了其他几个大的站点,发现都正常 。为什么唯独我们的SSL证书链中的其中一个CA(Sectigo AddTrust)过期了呢?
去查找下相关的文章,关键词sectigo gogetssl 2020 may 30.
发现第三条记录中有gogetssl发布的新闻, 标题是:Sectigo AddTrust External CA Root Expired May 30, 2020, 感兴趣的可以点击进去看看 。
新闻大致的意思:
由于Sectigo AddTrust外部CA根证书过期,影响了一些旧的设备或者一些老服务器,因为上面的根证书链中还存在该过期的CA证书 。对于客户端(浏览器/SDK)来说,他们是不受该CA过期的问题影响 。所以最大影响是在server端. 可以通过下载最新的AddTrust RSA 证书替换过期的 。总结目前该问题的影响面广不广,这个还暂时未知,不过根据我遇到的情况来看,影响大多在服务器端的外部服务之间的调用 。对web用户端来说,因为浏览器内证书链是更新的,不涉及该问题 。但对于 服务端来说,对于一些对外调用的https请求,如果对方域名证书链中涉及到该过期CA的话,可能会访问失败 。
Tips1:如果你的应用程序的部署方式是直接运行在主机上的话,可以使用配置管理工具(ansible/saltstack),统一修改 。如果是容器话部署的情况,可能涉及的稍微多一些,需要修改项目的Dockerfile,之后滚动更新该服务(当然如果你的应用不涉及到对外访问https/ssl调用,理论上可以延后更改!) 。
Tips2: 删除过期证书后,记得要重启主机上运行的服务!!!
来源:
https://aliasmee.github.io/post/resolve-certificate-verify-failed-with-2020-may-30/
【一个因CA根证书过期引起的故障】
推荐阅读
- 车前草茶清热,麦冬茅根茶
- 白茶如何保存?
- 没有工作的一年|首播1集,《没有工作的一年》冲到卫视收视率第一,原因为何?
- 空气能取暖一个月耗多少电?
- 四个时间点千万别喝茶 会致命
- 养绿萝怎样长得快?5个“小细节”,3个月长出2米长,叶绿气根多
- 冻顶乌龙传说,冻顶乌龙茶因何久负盛名
- 如何打造女人味?做到这5点,你就是一个女人味十足的气质女人
- 公司不交公积金,五险一金可以不在一个单位吗?
- 茶叶里有咖啡因吗,吃鸳鸯奶茶上火吗
