Puncte:1

De ce uneori clienții (non-browser) nu au încredere în certificate valide și semnate?

drapel us

Aceasta este o întrebare oarecum canonică... Sper că este în regulă.

În angajarea mea, rezolv adesea situațiile în care un client care rulează pe un server Linux (de obicei o aplicație java) nu are încredere într-un certificat valid, semnat - un certificat care este de încredere de către browsere. Soluția noastră rapidă obișnuită este să adăugăm certificatul în magazinul de încredere java cacerts, dar mă deranjează de ce este necesar.

Din punctul meu de vedere, există două posibilități:

  1. Partea serverului nu trimite lanțul complet (certificat de entitate finală + certificate intermediare), în ordinea corectă, ȘI clientul nu are încredere în certificatele intermediare (poate pentru că este prea vechi.)
  2. Magazinul de încredere pentru client nu conține certificatul rădăcină pentru a fi folosit ca ancoră de încredere (poate pentru că este prea vechi.)

Este corect? Dacă da, se pare că posibilitățile alternative de a forța încrederea în certificatul final al entității sunt:

  • Configurați aplicația server pentru a trimite lanțul complet.
  • Actualizați clientul (de exemplu, java) la o versiune mai nouă. În cazul meu, de obicei, versiunea majoră de java care poate fi utilizată este limitată de cerințele prealabile ale software-ului, dar poate că fiecare versiune minoră conține un magazin de încredere actualizat?

Orice gânduri de clarificări sunt apreciate.

Steffen Ullrich avatar
drapel se
*„ȘI clientul nu are încredere în certificatele intermediare (poate pentru că este prea vechi.)”* - aceasta nu are legătură cu vechiul. Magazinul de încredere conține pur și simplu doar CA rădăcină și se așteaptă ca serverul să trimită certificatele intermediare. Intermediarul este de încredere dacă a fost emis de un CA rădăcină de încredere local sau de un alt intermediar de încredere - indiferent de vârsta clientului.
Steffen Ullrich avatar
drapel se
În afară de asta, abordați punctele principale. Alte motive posibile: clientul nu reușește să trimită SNI (majoritatea clienților moderni o fac totuși), serverul este configurat corect pentru IPv4, dar nu pentru IPv6 și clientul încearcă să se conecteze la IPv6 în timp ce browserul ar putea folosi IPv4.
DarkMoon avatar
drapel in
Nu ați menționat O/S, dar cred că pe Windows, browserele folosesc magazinul de certificate Windows, dar Java îl folosește implicit pe unul propriu. Deci, doar pentru că un browser are încredere în el, nu înseamnă că Java o va face. javax.net.ssl.trustStoreType poate fi folosit pentru a-i spune să obțină lista de certificare rădăcină de încredere din cea internă Windows.
dave_thompson_085 avatar
drapel jp
@DarkMoon: IE Edge și Chrome/Windows folosesc magazinul de certificare Windows, dar Firefox îl folosește pe al său. Pe toate sistemele de operare, versiunile Java din Oracle (și anterior Sun) sunt implicite la propriul fișier cacerts, dar OpenJDK depinde de constructor; OpenJDK construit pentru distribuțiile Linux (întotdeauna? aproape întotdeauna?) utilizează magazinul de sistem.
em_bo avatar
drapel us
@SteffenUllrich Din câte îmi dau seama, Java este adesea livrat cu certificate intermediare pentru CA majore. Am văzut că vârsta clientului a intrat în joc când CA a trecut la un certificat intermediar mai nou decât cel furnizat.
em_bo avatar
drapel us
@DarkMoon Nu am fost explicit, dar contextul întrebării mele este în primul rând serverele Linux, astfel încât browserul în cauză și clientul în cauză nu rulează pe același sistem.

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.