自 DST Root CA X3 过期以来,向我的 API 发送 post 时存在信任问题

Trust issue while sending a post to my API since DST Root CA X3 Expiration

我在带有 ubuntu 的 aws S3 上有一个 C# api 运行。 此 API 由一个网站、一个 windows 应用程序和一个部署在三星 android 设备上的 xamarin 应用程序使用。

从今天 16:00(巴黎时间)开始,android 部分不再工作,我有一个“信任问题”。 显然它似乎与 DST Root CA X3 Expiration 有关(我这边没有发布,时机是完美的)。

但是我不明白为什么...

  1. SSL证书

我检查了我的 SSL 证书和关于 let'sencrypt 论坛,我有一个基于“ISRG Root X1”的路径。第二个基于“DST Root CA X3”(已过期)。 无论如何我都会更新它们以确保,但仍然是相同的证书路径。 (chrome 联系他们没问题)。

  1. 使用 https 的 Internet 正在运行

我可以通过应用程序内的网络视图访问互联网(以 https 访问我的网站)

  1. 无法使用 restsharp 连接

当我使用 RestSharp 联系我的服务器时,我遇到了信任问题。

我的 android 设备都一样:三星 A7 标签,一半是最新的,另一半是八月份更新的,所有这些都是 Android 11。所以理论上它们是“不关心”与此证书到期。

问题可能来自 Xamarin 或 RestSharp 吗?也许我的服务器证书?

编辑 好的一半解决了.... 如果我转到 android 设备中的“受信任的根证书文件夹”(不知道确切的名称),如果我禁用“数字签名信任公司 - DST 根 CA X3”,它又可以工作了!

不是“真正的解决方案”,因为我需要更新大约 150 台设备... 我心中有2个选择

编辑 2 已解决。

感谢你们所有人,抱歉我应该能够在 post 之前验证这个答案,但是 Whosebug 今晚处于只读模式,之后我就睡着了。

我做了什么(不确定是否所有步骤都是强制性的)。

1/ 我更新了 certbot,因为我的版本 < 1(检查 certbot --version)

sudo apt-get remove -y certbot python3-certbot-apache
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot

来自 Letsencrypt 论坛的@dmaehler 的程序

2/ 正如@hamzaElHanna 和@ThatCoderGuy 所说,我更新了证书

update-ca-certificates

3/ 我做了一个证书同步来同步 Ubuntu 和 Mono 证书(如果它像我理解的那样工作)

4/ 我更新我的 SSL 证书以删除 CA X3,因为它不再在我的服务器证书中

sudo certbot renew --force-renewal --preferred-chain "ISRG Root X1"

由@dmaehler 和@jsoetewey 提议

要检查的 SSlabs,旧证书的路径已删除,RestSharp 像以前一样工作。

谢谢你的帮助,一切都很有用!

我们今天遇到了类似的问题,不幸的是我们在 elasticbeanstalks 上使用的是旧版 Amazon Linux。根据您的情况升级到最新的 Ubuntu 版本应该可以解决您的问题。

我们遇到的问题是 Amazon Linux 版本受信任的证书服务总是添加过期的根证书。

restsharp 出现问题的原因可能是因为它试图在幕后执行类似 curl 请求的操作,并在发送请求时进行握手以验证 ssl 证书的有效性。它执行此操作的方法是根据服务器上受信任的证书检查它,其中包括过期的证书。

在此处查看 Ubuntu 具有最新证书升级的版本 https://ubuntu.com/security/notices/USN-5089-1

我在Cent OS 7 / openssl 1.0.2f.

上做了一个例子the workaround 1

https://gist.github.com/kujiy/67ef342170c4b0a36bb4bd9615ae2916

# fix the issue
cd /etc/pki/ca-trust/source/blacklist 
wget -O dst.pem https://crt.sh/?d=0687260331A72403D909F105E69BCF0D32E1BD2493FFC6D9206D11BCD6770739

cd /etc/pki/ca-trust/source/anchors
wget --no-check-certificate https://letsencrypt.org/certs/isrgrootx1.pem

update-ca-trust

DOMAIN=$YOUR_DOMAIN
openssl s_client -connect $DOMAIN:443 -servername $DOMAIN | grep verify

理想状态

文件

$ ls -al /etc/pki/ca-trust/source/blacklist
-rw-r--r--  1 root root 1200 Oct  1 16:48 dst.pem

$ ls -al /etc/pki/ca-trust/source/anchors
-rw-r--r--  1 root root 1939 Oct  1 16:45 isrgrootx1.pem

信托店

$ trust list | grep -C3 ISRG
pkcs11:id=%79%b4%59%e6%7b%b6%e5%e4%01%73%80%08%88%c8%1a%58%f6%e9%9b%6e;type=cert
    type: certificate
    label: ISRG Root X1
    trust: anchor                <----------
    category: authority

$ trust list | grep -C3 DST
pkcs11:id=%c4%a7%b1%a4%7b%2c%71%fa%db%e1%4b%90%75%ff%c4%15%60%85%89%10;type=cert
    type: certificate
    label: DST Root CA X3
    trust: blacklisted              <----------
    category: authority

如果您使用的是 certbot:

certbot renew --preferred-chain "ISRG Root X1" --force-renewal

我们遇到了类似的问题,我们通过添加 !在 /etc/ca-certificates.conf 文件中的 mozilla/DST_Root_CA_X3.crt 之前,它用于禁用 DST Root CA X3:

!mozilla/DST_Root_CA_X3.crt

之后,您需要更新 ca 证书:

$ update-ca-certificates