自 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 有关(我这边没有发布,时机是完美的)。
但是我不明白为什么...
- SSL证书
我检查了我的 SSL 证书和关于 let'sencrypt 论坛,我有一个基于“ISRG Root X1”的路径。第二个基于“DST Root CA X3”(已过期)。
无论如何我都会更新它们以确保,但仍然是相同的证书路径。 (chrome 联系他们没问题)。
- 使用 https 的 Internet 正在运行
我可以通过应用程序内的网络视图访问互联网(以 https 访问我的网站)
- 无法使用 restsharp 连接
当我使用 RestSharp 联系我的服务器时,我遇到了信任问题。
我的 android 设备都一样:三星 A7 标签,一半是最新的,另一半是八月份更新的,所有这些都是 Android 11。所以理论上它们是“不关心”与此证书到期。
问题可能来自 Xamarin 或 RestSharp 吗?也许我的服务器证书?
编辑
好的一半解决了....
如果我转到 android 设备中的“受信任的根证书文件夹”(不知道确切的名称),如果我禁用“数字签名信任公司 - DST 根 CA X3”,它又可以工作了!
不是“真正的解决方案”,因为我需要更新大约 150 台设备...
我心中有2个选择
- 我可以强制 RestSharp 使用一个证书多于另一个证书吗?
- 是否只是因为 Android 知道到期日期是 30/09 并且仍然使用它,因为我们仍然是 30/09,明天一切都会有效?
编辑 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
我在带有 ubuntu 的 aws S3 上有一个 C# api 运行。 此 API 由一个网站、一个 windows 应用程序和一个部署在三星 android 设备上的 xamarin 应用程序使用。
从今天 16:00(巴黎时间)开始,android 部分不再工作,我有一个“信任问题”。 显然它似乎与 DST Root CA X3 Expiration 有关(我这边没有发布,时机是完美的)。
但是我不明白为什么...
- SSL证书
我检查了我的 SSL 证书和关于 let'sencrypt 论坛,我有一个基于“ISRG Root X1”的路径。第二个基于“DST Root CA X3”(已过期)。 无论如何我都会更新它们以确保,但仍然是相同的证书路径。 (chrome 联系他们没问题)。
- 使用 https 的 Internet 正在运行
我可以通过应用程序内的网络视图访问互联网(以 https 访问我的网站)
- 无法使用 restsharp 连接
当我使用 RestSharp 联系我的服务器时,我遇到了信任问题。
我的 android 设备都一样:三星 A7 标签,一半是最新的,另一半是八月份更新的,所有这些都是 Android 11。所以理论上它们是“不关心”与此证书到期。
问题可能来自 Xamarin 或 RestSharp 吗?也许我的服务器证书?
编辑 好的一半解决了.... 如果我转到 android 设备中的“受信任的根证书文件夹”(不知道确切的名称),如果我禁用“数字签名信任公司 - DST 根 CA X3”,它又可以工作了!
不是“真正的解决方案”,因为我需要更新大约 150 台设备... 我心中有2个选择
- 我可以强制 RestSharp 使用一个证书多于另一个证书吗?
- 是否只是因为 Android 知道到期日期是 30/09 并且仍然使用它,因为我们仍然是 30/09,明天一切都会有效?
编辑 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 1https://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