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.