Puncte:1

Poate un server să ofere mai mult de un certificat TLS?

drapel br

Să presupunem că am un certificat TLS pentru un domeniu, dar nu sunt sigur dacă toți agenții de utilizator care se pot conecta prin HTTP l-ar accepta. Pot obține un alt certificat, semnat de o altă autoritate de certificare, și să-l folosesc în astfel de cazuri ca alternativă, în mod transparent pentru utilizator? Dacă este posibil, cum ar proceda comunicarea client-server pentru a stabili o conexiune sigură? Și este acest caz de utilizare bine cunoscut și acceptat în configurarea serverelor HTTP populare?

Știu că există întrebări similare, dar se întreabă despre modificarea certificatului utilizat în funcție de subdomeniu (posibil) sau prefix de cale (IIUC imposibil, deoarece la momentul negocierii serverul cunoaște doar autoritatea, nu URI-ul de solicitare complet).

Paul avatar
drapel cn
Nu am o sursă pentru asta, în afară de a afirma că văd multe site-uri Cloudflare, în special, cu atât certificat EC, cât și RSA. Bănuiesc că clientul decide pe care să-l folosească.
Puncte:2
drapel cn
Bob

Poate un server să ofere mai mult de un certificat TLS?

Un server poate a sustine mai mult de un certificat TLS. Dar se poate doar oferi un singur certificat TLS în strângere de mână TLS cu clientul. AFAIK care este limita stabilită în protocolul TLS (strângere de mână). RFC 5246

Capacitatea de a a sustine certificatele multiple este folosită cel mai frecvent atunci când aveți mai multe nume de domenii diferite care indică toate către același server.

Indicarea numelui serverului trimite numele de gazdă al serverului în handshake-ul TLS făcut de client. Acest lucru permite serverului să selecteze cel mai potrivit certificat de utilizat pentru acea conexiune. i.e. serverul poate folosi apoi certificatul pentru www.example.com când clientul indică că dorește să se conecteze la www.example.com și poate folosi un certificat diferit (sau implicit) atunci când clientul se conectează, de exemplu, numai cu adresa IP, fără nume de gazdă sau cu un nume de gazdă diferit în mesajul ClientHello.

Pe lângă numele serverului din mesajul ClientHello TLS handshake, un server poate fi configurat să folosească alți parametri pentru a selecta un alt certificat.

De exemplu, când în timpul strângerii de mână TLSv1.2 clientul indică faptul că prima preferință este să folosească curbe eliptice mai degrabă decât RSA , atunci poate fi oferită o cheie/certificat ECDSA și pentru clienții care nu o fac, un certificat RSA poate fi oferit în schimb.
Vezi de exemplu https://www.haproxy.com/blog/serving-ecc-and-rsa-certificates-on-same-ip-with-haproxy/ și/sau https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile

Puteți face același lucru, de exemplu, cu clienții moșteniți care nu acceptă cifruri mai sus de TLSv1.0

Dar odată ce certificatul a fost selectat de către server, nu există nicio rezervă, clientul fie acceptă, fie respinge certificatul oferit.

ByteEater avatar
drapel br
[Acest răspuns](https://security.stackexchange.com/a/46992) citează RFC 5426, Secțiunea 7.4.1.1: „Mesajul HelloRequest POATE fi trimis de server în orice moment”. Poate fi folosit pentru a oferi un alt certificat atunci când clientul l-a respins pe cel oferit anterior?
drapel cn
Bob
Totuși, este dificil să trimiți ceva odată ce clientul a întrerupt conexiunea, deoarece nu poate valida certificatul serverului...

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.