我有一个在 ubuntu 的 aws S3 上运行的 C# api。
此 API 供部署在 Samsung Android 设备上的网站、Windows 应用程序和 xamarin 应用程序使用。
从今天 16:00(巴黎时间)开始,Android 部分不再工作,我遇到了“信任问题”。
显然,它似乎与 DST Root CA X3 过期有关(我这边没有发布,时机很完美)。
但我不明白为什么...
- SSL证书
我检查了我的 SSL 证书,关于 let'sencrypt 论坛,我有一个基于“ISRG Root X1”的路径。第二个是基于“DST Root CA X3”(已过期)。
无论如何,我都会更新它们,但证书路径仍然相同。 (chrome 联系他们没有问题)。
- https 的互联网可以正常工作
我可以通过应用程序内的网络视图访问互联网(通过 https 访问我的网站)
- 无法使用 RestSharp 连接
当我使用 RestSharp 联系我的服务器时,我遇到了信任问题。
我的 Android 设备都是一样的:三星 A7 选项卡,一半是最新的,另一半是 8 月份更新的,所有这些设备都带有 Android 11。所以理论上他们“不关心”此证书过期。
问题可能来自 Xamarin 或 RestSharp 吗?也许我的服务器证书?
EDIT好吧一半解决了....
如果我转到 Android 设备中的“受信任的根证书文件夹”(不知道确切的名称),如果我禁用“数字签名信任有限公司 - DST 根 CA X3”,它会再次工作!
这不是一个“真正的解决方案”,因为我需要更新 150 台设备之类的东西......
我心中有2个选择
- 我可以强制 RestSharp 使用一个证书而不是另一个证书吗?
- 难道只是因为 Android 知道过期日期是 30/09 并且仍然使用它,因为我们仍然是 30/09 并且明天一切都会正常?
编辑 2 已解决。
谢谢大家,抱歉,我应该能够在发帖之前验证这个答案,但是今晚 stackoverflow 处于只读模式,之后我就睡着了。
我做了什么(不确定所有步骤是否都是强制性的)。
1/我更新了 certbot,因为我的版本
sudo apt-get remove -y certbot python3-certbot-apache
sudo snap install certbot --classic
sudo ln -s /snap/bin/certbot /usr/bin/certbot
来自 Letscrypt 论坛的 @dmaehler 的过程
2/ 正如@hamzaElHanna 和@ThatCoderGuy 所说,我更新了证书
update-ca-certificates
3/我做了一个cert-sync来同步Ubuntu和Mono证书(如果它按照我的理解工作)
4/ 我续订 SSL 证书以删除 CA X3,因为它不再位于我的服务器证书中
sudo certbot renew --force-renewal --preferred-chain "ISRG Root X1"
正如 @dmaehler 和 @jsoetewey 提议的
SSl 实验室进行检查,旧证书的路径已删除,RestSharp 可以像以前一样工作。
感谢您的帮助,一切都很有用!