Может ли сервер предлагать более одного сертификата TLS?
Сервер может поддерживать более одного сертификата TLS. Но это может только предложение один сертификат TLS в рукопожатии TLS с клиентом. Насколько я знаю, это ограничение, установленное в протоколе TLS (рукопожатие). RFC 5246
Возможность поддерживать несколько сертификатов чаще всего используются, когда у вас есть несколько разных доменных имен, которые указывают на один и тот же сервер.
Индикация имени сервера отправляет имя хоста сервера в рукопожатии TLS, сделанном клиентом. Это позволяет серверу выбрать наиболее подходящий сертификат для использования в этом соединении.
т.е. сервер может затем использовать сертификат для www.example.com
когда клиент указывает, что он хочет подключиться к www.example.com
и он может использовать другой сертификат (или сертификат по умолчанию), когда клиент подключается, например, только с IP-адресом, без имени хоста или с другим именем хоста в сообщении ClientHello.
В дополнение к имени сервера из сообщения рукопожатия ClientHello TLS сервер можно настроить на использование других параметров для выбора другого сертификата.
Например, когда во время рукопожатия TLSv1.2 клиент указывает, что первым предпочтением является использование эллиптических кривых, а не RSA, тогда может быть предложен ключ/сертификат ECDSA, а для клиентов, которые этого не делают, вместо этого может быть предложен сертификат RSA.
См. например https://www.haproxy.com/blog/serving-ecc-and-rsa-certificates-on-same-ip-with-haproxy/ и/или https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile
Вы можете сделать то же самое, например, с устаревшими клиентами, которые не поддерживают шифры выше TLSv1.0.
Но как только сертификат выбран сервером, отката нет, клиент либо принимает, либо отклоняет предложенный сертификат.