Puncte:0

Este necesar să includ o referință de fișier CA în blocul meu de configurare Apache vhost?

drapel dj

Îmi actualizez serverul web Apache și mă întreb dacă chiar trebuie să declar un fișier CA în configurația vhost?

Configurarea mea vhost este

SSLEngine activat
SSLCertificateFile /home/user/ssl/${SITE}-cert.pem
SSLCertificateKeyFile /home/user/ssl/${SITE}-key.pem
SSLCertificateChainFile /home/user/ssl/${SITE}-ca.pem
#SSLCACertificateFile /home/user/ssl/${SITE}-ca.pem

În mod implicit, Apache este livrat doar cu SSLCertificateFile și SSLCertificateKeyFile activ. La fel și cu pachetul Debian. Le înțeleg pe amândouă.

Implicit, ambele SSLCertificateChainFile și SSLCACertificateFile sunt dezactivate în sursa Apache și în pachetul Debian. Credeam că le-am înțeles, dar nu sunt atât de sigur acum.

Toate site-urile mele funcționează bine cu ambele CA directivele dezactivate.

Dar îmi scapa ceva? Dezactivarea ambelor face ca serverul meu să ofere un CA în culise, cum ar fi din /etc/ssl/certs al sistemului?

Let's Encrypt furnizează fișierul CA în timpul reînnoirii, așa că m-am gândit că nu ar strica să specificăm SSLCertificateChainFile, dar vreau să înțeleg de ce site-urile mele funcționează fără el?

Aceste două directive CA nu servesc un scop similar cu fișierul CA-bundle al cURL preluat de la Mozilla? Pot doar să punct SSLCACertificateFile la asta pe serverul meu și numim asta o zi?

Am înțeles că clientul se ocupă de verificarea certificatului site-ului prin utilizarea propriului CA autorizat. gresesc?

Documentele nu par să ofere nicio perspectivă:

SSLCertificateChainFile și SSLCACertificateFile

Puncte:2
drapel cn

În primul rând, trimiterea lanțului intermediar către certificatul rădăcină cu răspunsul serverului nu este întotdeauna exact NECESAR, dar este o practică recomandată.

Mulți clienți din zilele noastre au tot felul de certificate intermediare stocate în depozitele lor de încredere de certificate sau le obțin din depozitul de încredere al sistemului de operare. Cu toate acestea, dacă intenționați să deserviți publicul GENERAL, nu puteți face nicio presupunere în acest sens și TREBUIE să trimiteți lanțul intermediar cu răspunsul dvs.

Dacă nu trimiteți lanțul intermediar, veți rămâne cu rapoarte sporadice de oameni care nu se pot conecta la serviciul dvs. Și asta poate depinde de browserul lor, de versiunea browserului și de sistemul de operare subiacent.

În mod ironic, alegerea unui anumit lanț intermediar și trimiterea acestuia cu răspunsul poate uneori să anuleze validarea SSL pentru unii clienți care l-ar fi validat de la un lanț stocat ei înșiși. Așa cum a fost cazul unor clienți openssl mai vechi de pe servere și certificate emise de Letsencrypt, dar puteți presupune că, în acest caz, suportul acelor servere va înțelege în cele din urmă.

De fapt, nu aveți nevoie de directiva ChainFile din Apache pentru asta în sine, deoarece puteți, de asemenea, să concatenați fișierele de certificat pem de la certificatul final către rădăcină și să le utilizați doar cu directiva SSLCertificateFile.

Ceea ce nu trebuie să faceți este să trimiteți certificatul rădăcină. Pentru că dacă un client ar folosi asta, ar înfrânge utilizarea practică a validării SSL.

SSLCACertificateFile este necesar dacă și numai dacă, trebuie să validați certificatele de la clienții care se conectează la dvs. ȘI nu doriți să utilizați sistemele care stau la baza depozitului de încredere pentru asta. Deci, aceasta este de fapt o utilizare total diferită de cea a SSLCertificateChainfile

În plus, dacă aveți îndoieli, utilizați instrumentele excelente de validare ale Qualys SSL Labs: https://www.ssllabs.com/ssltest/

drapel in
Întrebarea nu este despre certificatul rădăcină, ci despre CA folosită pentru certificarea clientului. Acesta POATE fi CA rădăcină a site-ului, dar nu trebuie.
Gerrit avatar
drapel cn
OP vorbește despre găzduirea „site-urilor web”, deci în acest caz doar „SSLCertificateChainfile” este relevant.
Jeff avatar
drapel dj
*Dacă nu trimiteți lanțul intermediar, veți rămâne cu rapoarte sporadice de oameni care nu se pot conecta la serviciul dvs..* Acesta este ceea ce vreau să evit. Dacă specificarea `SSLCACertificateFile` sau `SSLCertificateChainFile` va ajuta la prevenirea acestui lucru, atunci voi adăuga directiva corespunzătoare. Dacă nu are nicio diferență, nu o voi face.
Gerrit avatar
drapel cn
TREBUIE să trimiteți absolut lanțul intermediar. Nu are nicio diferență dacă îl concatenați cu certificatul final și îl trimiteți în `SSLCertificateFile`, sau păstrați certificatul final și lanțul separat și trimiteți lanțul în `SSLCertificateChainFile`. După cum am explicat, sporadic cu oameni care lucrează pe servere vechi care de fapt le vor bloca, dar asta nu poate fi ajutat.
Jeff avatar
drapel dj
Am găsit aceste documente [LetsEncrypt](https://eff-certbot.readthedocs.io/en/stable/using.html#where-are-my-certificates) care clarifică totul. Multumesc din nou.
Gerrit avatar
drapel cn
Da, este de fapt LetsEncrypt unde lanțul intermediar implicit este optimizat pentru compatibilitate maximă cu cât mai mulți clienți posibil, dar în acest proces distrugând compatibilitatea cu unele software-uri vechi de server dacă oamenii nu îl întrețin. Acest lucru s-a întâmplat după ce vechea rădăcină a expirat.
A.B avatar
drapel cl
A.B
În general, sunt de acord cu ceea ce a scris Gerrit. Dar pentru a fi interesant despre configurația specifică Apache, aceeași configurație implicită spune de obicei că SSLCertificateChainfile poate fi îndreptat către același certificat SSLCertificateFile dacă conține o concatenare de server+intermediare. De fapt, a nu-l defini în acest caz funcționează la fel (și este mai logic). Această caracteristică (care permite *nu* folosi SSLCertificateChainfile) este disponibilă începând cu apache httpd 2.4.8 : https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatechainfile
Puncte:1
drapel se

Este necesar un fișier CA dacă certificatele trebuie validate față de acest CA. În contextul unui server SSL precum Apache, acest lucru este necesar pentru validarea certificatelor client și pentru validarea răspunsurilor OCSP în contextul capsării OCSP. Dacă nu este nevoie de nimic din toate acestea, atunci nu trebuie dat niciun fișier CA. Dacă este nevoie de oricare dintre acestea, dar validarea ar trebui să se întâmple în raport cu CA implicită a sistemului, atunci nici un fișier CA nu trebuie să fie furnizat.

Jeff avatar
drapel dj
În contextul unui server web simplu vechi care servește https, este de obicei necesară definirea directivelor CA? Habar n-am dacă fac capsare OCSP și nu sunt sigur dacă validez certificatele client atunci când îmi difuzez paginile https.
drapel in
Dacă nu știți dacă utilizați aceste funcții, șansele sunt foarte mari să nu le folosiți.
Jeff avatar
drapel dj
Cred că am înțeles acum. Majoritatea clienților validează serverul cu CA lor, dar majoritatea serverelor care deservesc https nu validează clientul. Astfel, nu trebuie să specific o directivă `CA` decât dacă încep să-mi validez clienții. Sună bine?
Steffen Ullrich avatar
drapel se
@Jeff: Da, de obicei nu se folosesc certificate de client. Și capsarea OCSP (dacă este activată) poate fi verificată în raport cu CA de 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.