我有一個 C# api 在帶有 ubuntu 的 aws S3 上運行。此 API 由部署在三星 Android 設備上的網站、Windows 應用程式和 xamarin 應用程式使用。
從今天 16:00(巴黎時間)開始,android 部分不再作業,我有一個“信任問題”。顯然,它似乎與 DST Root CA X3 到期有關(我這邊沒有發布,時機很完美)。
但我不明白為什么...
- SSL證書
我檢查了我的 SSL 證書,關于 Let'sencrypt 論壇,我有一個基于“ISRG Root X1”的路徑。第二個基于“DST Root CA X3”(已過期)。無論如何我都會更新它們以確保,但仍然是相同的證書路徑。(鉻與他們聯系沒有問題)。
- 帶 https 的互聯網正在運行
我可以通過應用程式內的 webview 訪問互聯網(以 https 訪問我的網站)
- 無法使用restsharp連接
當我使用 RestSharp 聯系我的服務器時,我遇到了信任問題。
我的安卓設備都是一樣的:三星 A7 標簽,一半是最新的,另一半是八月更新的,都是 Android 11。所以理論上他們“不關心”這個證書過期。
問題可能來自 Xamarin 或 RestSharp 嗎?也許我的服務器證書?
編輯 好的一半解決了.... 如果我轉到我的 android 設備中的“受信任的根證書檔案夾”(不知道確切名稱),如果我禁用“數字簽名信任公司 - DST Root 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
來自 Letsencrypt 論壇的@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 所提議的
SSlabs 來檢查,舊證書的路徑被洗掉,RestSharp 像以前一樣作業。
感謝幫助,一切都很有用!
uj5u.com熱心網友回復:
如果您使用的是 certbot:
certbot renew --preferred-chain "ISRG Root X1" --force-renewal
uj5u.com熱心網友回復:
我們遇到了類似的問題,我們通過添加 ! 在 /etc/ca-certificates.conf 檔案中的 mozilla/DST_Root_CA_X3.crt 之前,它用于禁用 DST Root CA X3:
!mozilla/DST_Root_CA_X3.crt
之后,您需要更新 ca 證書:
$ update-ca-certificates
uj5u.com熱心網友回復:
我們今天遇到了類似的問題,不幸的是我們在 elasticbeanstalks 上使用了較舊的 Amazon Linux。在您的情況下升級到最新的 Ubuntu 版本應該可以解決您的問題。
我們遇到的問題是 Amazon Linux 版本的可信證書服務總是添加過期的根證書。
restsharp 出現問題的原因可能是因為它試圖在幕后執行類似 curl 請求的操作,并在發送請求時進行握手以驗證 ssl 證書的有效性。它執行此操作的方式是根據服務器上受信任的證書(包括過期證書)對其進行檢查。
有關具有最新證書升級的 Ubuntu 版本,請參見此處https://ubuntu.com/security/notices/USN-5089-1
uj5u.com熱心網友回復:
我 在 Cent OS 7 / openssl 1.0.2f 上做了一個解決方法 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=y
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313172.html
上一篇:如何在同一行插入多個專案
