Puncte:19

Clientul de pe Debian 9 raportează în mod eronat certificatul expirat pentru domeniul emis de letsencrypt

drapel in

Dacă încerc să accesez serverul nostru HTTPS care are un certificat emis de certbot de la Debian 9, primesc următoarea eroare:

 # curl -v https://hu.dbpedia.org/
 * Se încearcă 195.111.2.82...
 * TCP_NODELAY setat
 * Conectat la hu.dbpedia.org (195.111.2.82) portul 443 (#0)
 * ALPN, oferind h2
 * ALPN, oferind http/1.1
 * Selectare cifra: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
 * setați cu succes locațiile de verificare a certificatelor:
 * CAfile: /etc/ssl/certs/ca-certificates.crt
   CApath: /etc/ssl/certs
 * TLSv1.2 (OUT), antet TLS, stare certificat (22):
 * TLSv1.2 (OUT), strângere de mână TLS, salut client (1):
 * TLSv1.2 (IN), strângere de mână TLS, salut server (2):
 * TLSv1.2 (IN), strângere de mână TLS, Certificat (11):
 * TLSv1.2 (OUT), alertă TLS, salut server (2):
 * Problemă cu certificatul SSL: certificatul a expirat
 * Curl_http_done: numit prematur == 1
 * a oprit fluxul de pauză!
 * Închiderea conexiunii 0
 curl: (60) Problemă cu certificatul SSL: certificatul a expirat

Cu toate acestea, dacă încerc aceeași comandă de la debian 10, reușește.

Am încercat să copiez pur și simplu toate certificatele ca de pe o mașină virtuală debian 10 pe mașina virtuală debian 9 (în /usr/local/share/ca-certificates) cu rsync și apoi am rulat update-ca-certificate care se pare că a adăugat peste 400 de certificate. Din păcate, nu a ajutat. Nu este de mirare, deoarece se pare că există aceleași certificate atât pe Debian 9, cât și pe 10, aparent.

Intrebarea mea este: Cum pot accesa site-uri cu certificate certbot de pe mașini Debian 9 fără a ignora cu totul verificarea certificatului

P.Péter avatar
drapel in
@GeraldSchneider Din păcate, aceasta nu este o opțiune, cel puțin pe termen scurt. Aș dori să am o soluție temporară până când se poate face upgrade.
P.Péter avatar
drapel in
Fapt amuzant: versiunile vechi (~4 ani) ale OSX suferă de aceeași problemă.Probabil că folosesc și versiunea veche openssl.
Puncte:25
drapel cn

Avertizare! Vă rugăm să planificați calea de actualizare a sistemului de operare. Sfaturile de mai jos ar trebui aplicate numai în situații de urgență pentru a repara rapid un sistem critic.

Soluția de mai jos funcționează pe Debian Jessy 8 și ar trebui să lipsească actualizările și pe Stretch 9. Tocmai l-am testat docker run -it debian:jessie bash, apt-get update && apt-get install curl.

Inainte de:

# curl -I https://hu.dbpedia.org
curl: (60) Problemă cu certificatul SSL: certificatul a expirat
Mai multe detalii aici: http://curl.haxx.se/docs/sslcerts.html
....

Mai întâi verificați dacă aveți prezent certificat DST Root CA X3:

# grep X3 /etc/ca-certificates.conf 
mozilla/DST_Root_CA_X3.crt

Versiunile Debian vechi au și ISRG Root X1 adecvat:

# grep X1 /etc/ca-certificates.conf 
mozilla/ISRG_Root_X1.crt

Acest lucru va dezactiva X3:

# sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf && update-ca-certificates -f

Domeniul dvs. răspunde la curl fine:

# curl -I https://hu.dbpedia.org/
HTTP/1.1 200 OK
...

Din nou, vă rugăm să planificați un upgrade.

drapel sh
Ray
Această eliminare/comentare a certificatului din fișierul conf a funcționat și pentru noi. Vă mulțumesc pentru ajutor.
drapel sb
Pot confirma că acest lucru funcționează și pe Debian Stretch.
luminol avatar
drapel uz
Funcționează pe trei dintre serverele mele Debian GNU/Linux 10 (buster). Patru dintre ele s-au prăbușit într-o zi și a trebuit să le desprind în mare parte de bucle pentru ca ele să funcționeze. Un site web găzduit pe Debian Buster nu funcționează încă, dar poate fi o eroare diferită, presupun, deoarece cele trei site-uri web anterioare s-au defectat pe 1 octombrie, dar acesta cu eroarea rămasă a scăzut pe 4 ianuarie. Mulțumesc!
Puncte:25
drapel cn

În primul rând, Debian 9 este EOL. Dar, deoarece clienții s-ar putea să nu fie sub controlul dvs., este posibil să doriți, desigur, să încercați să îi răspundeți în această rupere.

Presupun că, în timp ce întrebarea menționează doar certbot, că este vorba într-adevăr în mod specific despre Letsencrypt.
(Unealta certbot însuși este un client de protocol ACME care este folosit și cu alte CA-uri bazate pe ACME, așa că există loc de confuzie aici.)

Problema la îndemână ar părea a fi combinația dintre:

  • Vechea rădăcină Letsencrypt ("DST Root CA X3") a expirat
  • Noul Mod implicit Lanțul LE încearcă să fie „extra compatibil” prin prezentarea unei extensii opționale a lanțului în care noua rădăcină ("ISRG Root X1") este prezentată ca intermediar cu semn încrucișat pentru vechea rădăcină (deoarece versiunile Android foarte vechi încă acceptă rădăcina expirată, dar nu au noua rădăcină )
  • Openssl 1.0 are o eroare determinându-l să încerce doar primul lanț pe care îl vede și, dacă nu-i place asta, nu se uită la alte posibilități (adică, lanțul nou mai scurt care se termină la X1 față de extensia mai lungă de „compatibilitate” a acelui lanț care trece prin X1 la X3).
  • libcurl3 pe Debian 9 este legat de libssl 1.0

Dacă în schimb prezentați noul lanț de certificate LE care nu încearcă să fie extra compatibil, doar care se termină la noua rădăcină (X1), permite ca libssl 1.0 să funcționeze (dar atunci pierdeți compatibilitatea cu Android foarte vechi).

În afară de asta, alte CA (ACME sau altfel) este probabil opțiunea de luat în considerare.

P.Péter avatar
drapel in
Aceasta a fost cea mai bună explicație pentru problemă, mulțumesc!
P.Péter avatar
drapel in
Apropo, cel mai „debian” mod de a dezactiva un certificat pare să fie rularea `dpkg-reconfigure ca-certificates` și deselectarea celui ofensator din listă.
Orphans avatar
drapel cn
Debian 9 nu este cu adevărat la sfârșitul vieții, Debian 8 a ajuns la EOL în această vară, dar Debian 9 continuă să fie susținut cu actualizări de securitate.
bN_ avatar
drapel lu
bN_
Este o explicație excelentă a cauzei problemei, dar este posibil să o remediați fără a face upgrade la Debian 10?
bN_ avatar
drapel lu
bN_
Editare: @P.Péter folosind `dpkg-reconfigure ca-certificates` pentru a deselecta "DST Root CA X3" rezolvă problema. Răspunsul acceptat oferă de fapt explicații, dar nicio soluție. Ar trebui să fie actualizat cu comentariul @P.Péter.
Han avatar
drapel us
Han
Nu am încercat încă cea mai recentă versiune a openssl, dar am întâlnit aceeași problemă pe `openssl 1.1.1c` în sistemul meu Debian și am rezolvat problema eliminând certificatul DST X3 expirat și adăugând un nou certificat ISRG X1 (prin rularea `dpkg -reconfigurează`) . Consultați [acest articol](https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/) pentru detalii
Puncte:5
drapel ru
ndd

Certificatul rădăcină DST Root CA X3 a expirat pe 30 septembrie 14:01:15 2021 GMT. A fost folosit ca una dintre căile de certificare pentru certificatele Letâs Encrypt Versiunea cURL mai veche are o eroare care va face ca rădăcina expirată să eșueze conexiunea în loc să încerce alte rădăcini în magazinul ca local.

Începând cu 30 septembrie 2021 ca magazin pentru bucle (https://curl.se/docs/caextract.html) conține încă certificatul rădăcină DST Root CA X3 expirat, așa că actualizarea acestuia nu va rezolva problema. Puteți fie să vă actualizați cURL-ul (care ar putea fi destul de dificil în unele situații) sau să editați magazinul ca local (de exemplu, /etc/pki/tls/certs/ca-bundle.crt) și să eliminați manual certificatul după linia „DST Root CA X3”

Puncte:2
drapel in

Pentru Debian 8 și 9, fac asta doar pentru a actualiza certificatul pe gazdă și nu mai am eroarea 60: problemă cu certificatul SSL: certificatul a expirat: https://github.com/xenetis/letsencrypt-expiration

Doar alergați, ar trebui să funcționeze:

wget -O - https://raw.githubusercontent.com/xenetis/letsencrypt-expiration/main/letsencrypt-expiration.sh | bash
drapel in
Minunat, mulțumesc! În cele din urmă voi trece de la Debian 9...
Puncte:2
drapel bd

Tocmai am avut această problemă cu o imagine Docker bazată pe Debian Stretch. Soluția a fost ușoară, presupun că Debian a corectat libssl1.0.2 pentru a rezolva problema de selecție a lanțului menționată de HÃ¥kan. În cazul meu, actualizarea doar a certificatelor și libssl1.0.2 prin alergare apt install -y libssl1.0.2 ca-certificates (cu actualizare apt pentru containere în prealabil) a fost suficient.

Puncte:0
drapel ae

Urmând răspunsul lui Nicolo1, am rulat scriptul pe serverul meu Debian 9 vechi și încă primeam aceeași eroare de certificat expirat. update-ca-certificate pagina de manual spune

În plus, toate certificatele cu extensia .crt găsite mai jos /usr/local/share/ca-certificates sunt de asemenea incluse ca fiind implicit de încredere.

Scriptul pe care l-a distribuit, de astăzi, descarcă certificatele ISRG & Letâs Encrypt ca .pem fisiere, deci update-ca-certificate nu le includ automat. După ce a făcut o legătură soft la acestea .pem fișiere, dar cu a .crt extensie, rulare update-ca-certificate din nou, într-adevăr, le include și eroarea certificatului expirat dispare. Multumesc pentru raspuns!

John Greene avatar
drapel cn
Am întotdeauna un script care copiază fișierele PEM în directorul de configurare al demonului în loc de un link simbolic.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.