自 DST Root CA X3 过期以来向我的 API 发送帖子时出现信任问题

Too*_*ows 8 ssl android restsharp xamarin lets-encrypt

我有一个在 ubuntu 的 aws S3 上运行的 C# api。此 API 供部署在 Samsung Android 设备上的网站、Windows 应用程序和 xamarin 应用程序使用。

从今天 16:00(巴黎时间)开始,Android 部分不再工作,我遇到了“信任问题”。显然,它似乎与 DST Root CA X3 过期有关(我这边没有发布,时机很完美)。

但我不明白为什么...

  1. SSL证书

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

  1. https 的互联网可以正常工作

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

  1. 无法使用 RestSharp 连接

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

我的 Android 设备都是一样的:三星 A7 选项卡,一半是最新的,另一半是 8 月份更新的,所有这些设备都带有 Android 11。所以理论上他们“不关心”此证书过期。

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

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

这不是一个“真正的解决方案”,因为我需要更新 150 台设备之类的东西......我脑子里有 2 个选择

  • 我可以强制 RestSharp 使用一个证书而不是另一个证书吗?
  • 难道只是因为 Android 知道过期日期是 30/09 并且仍然使用它,因为我们仍然是 30/09 并且明天一切都会正常?

编辑 2 已解决。

谢谢大家,抱歉,我应该能够在发帖之前验证这个答案,但是今晚 stackoverflow 处于只读模式,之后我就睡着了。

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

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
Run Code Online (Sandbox Code Playgroud)

来自 Letsencrypt 论坛的 @dmaehler 的过程

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

update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

3/我做了一个cert-sync来同步Ubuntu和Mono证书(如果它按照我的理解工作)

4/ 我续订 SSL 证书以删除 CA X3,因为它不再位于我的服务器证书中

sudo certbot renew --force-renewal --preferred-chain "ISRG Root X1"
Run Code Online (Sandbox Code Playgroud)

正如 @dmaehler 和 @jsoetewey 提议的

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

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

小智 8

如果您使用 certbot:

certbot renew --preferred-chain "ISRG Root X1" --force-renewal
Run Code Online (Sandbox Code Playgroud)


小智 1

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

\n

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

\n

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

\n

请参阅此处了解具有最新证书升级的 Ubuntu 版本https://ubuntu.com/security/notices/USN-5089-1

\n