Как сервер определяет, какую версию TLS использовать?

Как сервер определяет, какую версию TLS использовать?

Теперь я понимаю, что между клиентом и сервером происходят переговоры... Но что определяет, каксервервыбирает версию TLS, которую он будет использовать при ответе на https-запрос? Как он может, например, ограничить соединения минимальной версией TLS? Кроме того, есть ли связь между сертификатом безопасности, используемым сервером, и версией TLS, которую использует сервер? Я читал некоторые документы AWS, и, похоже, это предполагалось.

Полный новичок здесь; извините, если это не то, с чего я спрашиваю. Я не против ссылки, чтобы пойти и почитать, в качестве ответа.

решение1

Но что определяет, как сервер выбирает версию TLS, которую он будет использовать при ответе на https-запрос?

В рукопожатии TLS клиент объявляет серверу лучшую версию, которую он может сделать. Если сервер поддерживает версии протокола, которые равны или меньше версии клиента, он ответит лучшей из них. Если сервер не поддерживает ни одну из них, рукопожатие не будет выполнено. Если сервер ответит версией, которая не поддерживается клиентом, рукопожатие также не будет выполнено.

Кроме того, существует ли связь между сертификатом безопасности, используемым сервером, и версией TLS, используемой сервером?

Почти нет связи между версией протокола TLS и используемым сертификатом. Есть небольшая разница между давно устаревшими версиями SSLv3 и TLS 1.x протокола в том, что только TLS 1.x поддерживает расширения. Важным расширением является server_name(SNI — Индикация имени сервера), где клиент указывает домен, к которому он хочет обратиться. В случае нескольких сертификатов на одном IP-адресе сервер может выбрать подходящий.

решение2

Я не эксперт по согласованию рукопожатий протокола TLS, поэтому вот ''грубый'' ответ (Эксперты, поправьте меня, если я не прав) * Я говорю только о версии TLS. А не о шифрах.

Сценарий 1: Ваш клиент попробует самую высокую версию TLS, какую только сможет. Допустим, ваш клиент поддерживает 1.1(OLD) и 1.2. Затем сервер подключится к вам, используя самую высокую возможную версию. Надеясь, что это будет 1.2.

Сценарий 2: Ваш клиент поддерживает версию 1.2 или более позднюю, а ваш сервер — старая и необновленная машина, которая знает только версию 1.1.

Сценарий 3: То же, что и 2, но наоборот. Соединение также не будет работать.

Ваш клиент не сможет договориться о соединении. На этом всё и остановится.

Сценарий 4: Ваш клиент поддерживает версии 1.1 и 1.2, а также сервер, но, предположим, администратор сервера настроил (например, Apache HTTPD) принудительное подключение только с использованием версии 1.2, тогда ваш клиент будет использовать версию 1.2.

Также есть TLS 1.3... Но это был бы тот же самый настрой (идея).

Связанный контент