首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Debian 9上的客户端错误地报告了已过期的授权域证书。

Debian 9上的客户端错误地报告了已过期的授权域证书。
EN

Server Fault用户
提问于 2021-09-30 16:40:25
回答 6查看 19.8K关注 0票数 21

如果我试图访问具有debian 9颁发的证书的HTTPS服务器,则会得到以下错误:

代码语言:javascript
复制
 # curl -v https://hu.dbpedia.org/
 *   Trying 195.111.2.82...
 * TCP_NODELAY set
 * Connected to hu.dbpedia.org (195.111.2.82) port 443      (#0)
 * ALPN, offering h2
 * ALPN, offering http/1.1
 * Cipher selection:      ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
 * successfully set certificate verify locations:
 *   CAfile: /etc/ssl/certs/ca-certificates.crt
   CApath: /etc/ssl/certs
 * TLSv1.2 (OUT), TLS header, Certificate Status (22):
 * TLSv1.2 (OUT), TLS handshake, Client hello (1):
 * TLSv1.2 (IN), TLS handshake, Server hello (2):
 * TLSv1.2 (IN), TLS handshake, Certificate (11):
 * TLSv1.2 (OUT), TLS alert, Server hello (2):
 * SSL certificate problem: certificate has expired
 * Curl_http_done: called premature == 1
 * stopped the pause stream!
 * Closing connection 0
 curl: (60) SSL certificate problem: certificate has expired

但是,如果我尝试使用debian 10中的相同命令,它就会成功。

我尝试使用rsync简单地将所有ca证书从debian 10 VM复制到debian 9 VM (到/usr/local/share/ca证书),然后运行update-ca-certificates,它似乎添加了400+证书。不幸的是,这并没有帮助。这并不奇怪,因为很明显,debian 9和10上都有相同的证书。

My问题是:我如何从Debian9机器访问带有certbot证书的站点,<#>without完全忽略了证书验证。

EN

回答 6

Server Fault用户

回答已采纳

发布于 2021-09-30 17:10:06

首先,Debian 9是EOL。但是,由于客户可能不在你的控制之下,你当然想在这一次的破坏中满足他们的需要。

我猜想,虽然这个问题只提到了certbot,但它确实是关于Letsencrypt的。(工具certbot本身是一个ACME协议客户端,它也与其他基于ACME的CA一起使用,因此这里有一些混淆的空间。)

眼前的问题似乎是以下两者的结合:

  • 旧的Letsencrypt根("DST根CA X3")已过期
  • 新的defaultLE试图“额外兼容”通过提供新根的可选扩展("ISRG root X1")作为旧根的交叉签名中间(因为非常旧的Android版本仍然接受过期的根,但没有新的根)。
  • OpenSSL1.0有一个错误使它只尝试它看到的第一条链,如果它不喜欢它,它就不会考虑任何其他的可能性(例如,以X1结尾的新链越短,该链通过X1到X3的“兼容性”扩展就越长)。
  • Debian 9上的libcurl3 3链接到libssl1.0

如果您提供了新的LE证书链,它不尝试额外兼容,只以新根(X1)结束,它允许libssl1.0工作(但这样就失去了与真正旧的Android的兼容性)。

除此之外,其他CA (ACME或其他方面)可能是需要考虑的选择。

票数 26
EN

Server Fault用户

发布于 2021-09-30 19:48:17

警告!请规划OS升级路径。以下建议应仅适用于紧急情况,以迅速修复一个关键的系统。

下面的解决方案工作在Debian杰西8和应该在拉伸9缺失的更新。我刚在docker run -it debian:jessie bashapt-get update && apt-get install curl上测试过。

在此之前:

代码语言:javascript
复制
# curl -I https://hu.dbpedia.org
curl: (60) SSL certificate problem: certificate has expired
More details here: http://curl.haxx.se/docs/sslcerts.html
....

首先检查是否存在冒犯DST根CA X3证书:

代码语言:javascript
复制
# grep X3 /etc/ca-certificates.conf 
mozilla/DST_Root_CA_X3.crt

旧的Debian版本也提供了适当的ISRG X1:

代码语言:javascript
复制
# grep X1 /etc/ca-certificates.conf 
mozilla/ISRG_Root_X1.crt

这将禁用X3:

代码语言:javascript
复制
# sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf && update-ca-certificates -f

您的域响应卷曲良好:

代码语言:javascript
复制
# curl -I https://hu.dbpedia.org/
HTTP/1.1 200 OK
...

再一次,请计划升级。

票数 28
EN

Server Fault用户

发布于 2021-09-30 21:32:59

DST根CA X3根证书于9月30日14:01:15 2021格林尼治时间到期。它被用作证书的认证路径之一,让我们对证书进行加密,旧版本的cURL版本有一个错误,它将导致过期的根连接失败,而不是尝试本地ca存储中的其他根。

截至2021年9月30日,curl存储库(https://curl.se/docs/caextract.html)仍然包含过期的DST X3根证书,因此更新它不会修复问题。您可以更新您的cURL (在某些情况下这可能很有挑战性)或编辑本地ca存储(f.e。/etc/pki/tls/certs/ CA -bundle.crt),并在"DST根CA X3“行后面手动删除证书

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1079199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档