DST Root CA X3过期后调用C# API出现信任问题的排查与解决
DST Root CA X3过期导致Xamarin安卓端RestSharp调用API出现信任问题的解决记录
问题背景
我有一个运行在AWS S3 Ubuntu环境上的C# API,该API供网站、Windows应用以及部署在三星安卓设备上的Xamarin应用调用。自巴黎时间9月30日16点起,安卓端功能无法正常使用,提示信任问题,问题发生时间完美匹配DST Root CA X3过期时间,且期间我未发布任何版本,因此可以明确和该根证书过期相关,但不清楚具体诱因。
问题排查
- SSL证书:核查了SSL证书,证书有一条基于“ISRG Root X1”的信任链,第二条链基于已过期的“DST Root CA X3”。为确保无误重新续期了证书,但信任链结构未发生变化,且Chrome访问该API无任何问题。
- HTTPS网络正常:应用内Webview可以正常通过HTTPS访问我的网站。
- RestSharp无法连接:当使用RestSharp访问服务端时就会出现信任问题。
补充说明:所有安卓设备均为三星A7平板,一半处于最新系统,另一半在8月完成更新,全部搭载Android 11,理论上不受本次根证书过期影响。
临时解决方案(不适用于批量设备)
如果进入安卓设备的“受信任根证书目录”,禁用“Digital Signature Trust Co. - DST Root CA X3”后功能即可恢复正常。但该方案需要操作约150台设备,不具备可行性。
当时尝试寻找的两个优化方向:
- 是否可以强制RestSharp优先使用指定证书?
- 是否是因为当前还是9月30日,安卓识别到DST Root CA X3的过期日期为9月30日仍在使用,到次日就会自动恢复正常?
最终解决方案
执行如下操作(不确定所有步骤都是必须的):
- 升级certbot到最新版本,低于1.0版本的旧版certbot需要先卸载重装,可通过
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
- 更新系统根证书:
update-ca-certificates
- 执行cert-sync同步Ubuntu和Mono的证书。
- 强制续期SSL证书,指定优先使用ISRG Root X1信任链,移除DST Root CA X3相关链:
sudo certbot renew --force-renewal --preferred-chain "ISRG Root X1"
操作完成后经SSLabs检测,旧证书对应的DST Root CA X3信任链已被移除,RestSharp可正常访问接口。
内容的提问来源于stack exchange,提问作者Toows
相关产品推荐
相关产品推荐

