Что происходит с браузером пользователя, если сертификат SSL заменяется в середине сеанса?

8

В свете того, что современные браузеры постепенно сокращают сертификаты безопасности, подписанные с использованием алгоритма хеширования SHA1, мы заняты заменой всех наших сертификатов SHA1 на SHA2. Как правило, мы могли бы просто заменить сертификаты для этих веб-приложений, предназначенных главным образом для внутреннего использования, вечером или в выходные дни, когда было мало трафика.

Что произойдет, если я буду по незнанию находиться в середине зашифрованного сеанса и сертификат для домена будет заменен?

Чтобы быть в безопасности, мы сообщили нашим клиентам, что они могут предположить, что пользователи в середине сеанса во время этого изменения могут увидеть прерывание своего сеанса и возможную потерю любых данных, еще не сохраненных в базе данных. Если бы я находился в середине сеанса во время замены сертификата, могу ли я предположить, что при загрузке следующей страницы после замены сертификата мой браузер увидит сертификат с подписью, отличный от того, с которым был установлен мой сеанс, и вызовет сеанс " урод". Я ожидаю, что все браузеры будут иметь дело с этой ситуацией аналогичным образом, но, пожалуйста, просветите меня, если я ошибаюсь.

Я потратил немало времени на поиск дополнительной информации о том, как браузеры будут справляться с этим сценарием, но мне не особо повезло с поиском общей или технической информации. Мне действительно любопытно, и я решил опубликовать этот вопрос в надежде получить ответ, который ответит на вопрос Q кратко, со ссылкой на некоторые достоверные источники для проверки.

Даллас
источник

Ответы:

7

... мой браузер будет видеть другой подписанный сертификат, чем тот, с которым был установлен мой сеанс, и заставит сеанс "сходить с ума".

С точки зрения веб-мастера, и не вдаваясь в подробности о том, « как работает SSL » (что было бы лучше обсудить в информационной безопасности ) ...

Ключ сеанса больше не будет совпадать, поэтому браузер сервера или клиента может прервать соединение. После этого клиентский браузер отправит еще один запрос на любые ресурсы на следующей странице, которые не будут получены, что приведет к открытию нового соединения, повторному установлению SSL-квитирования, сертификата, обмена ключами и сеансового ключа (как кратко описано ниже). здесь )

Поскольку новый сертификат SSL будет выдан тому же домену, пользователи, скорее всего, ничего не заметят, поскольку изменится только сертификат (т. Е. Будет отображаться зеленая блокировка), который пользователи обычно не видят в любом случае, особенно между страницами на тот же сайт.


Однако, что вы можете не учитывать, так это то, что при установке нового SSL-сертификата вам все равно придется настраивать и перезагружать сервер, поэтому сеансы будут закрыты независимо от того, что браузеры не получат ничего ...

Поэтому я бы предложил временно перенаправить весь трафик на страницу «Техническое обслуживание» с помощью перенаправления 302 , с предварительным уведомлением, опубликованным на вашем сайте, с указанием времени, в течение которого будет выполняться обслуживание, и как долго сайт будет недоступен.

Альтернативой перенаправлению может быть отправка кода ответа HTTP-сервера 503 Service Unavailable с   полем ответа HTTP-заголовка Retry-After, указывающим, когда сервер снова будет доступен.

И последнее, но не менее важное: если у вас есть несколько серверов для внешнего интерфейса сайта, вы можете установить сертификат на другом сервере и перенаправить новые соединения на него, пока вы обновляете другие серверы. Вы можете проверить наличие соединений в Apache здесь и IIS здесь, чтобы помочь с этим, если вы еще не используете настройку отказоустойчивости или балансировки нагрузки.

дан
источник
Сертификаты находятся на балансировщике нагрузки спереди ... поэтому нет прерывания обслуживания и не требуется перенаправление 503 / temp.
Даллас
Так что, если бы я был на 5-й странице 10-страничного рабочего процесса ... сохранил ли мой сеанс информацию, уже введенную на страницах 1-5, и продолжил бы на 6-й странице с новым сертификатом, или сброс соединения потерял бы все переменные сеанса и запустил снова на странице 1 свежо?
Даллас
Это зависит от того, как закодировано ваше веб-приложение. Он должен отслеживать идентификатор сеанса для пользователя (хранится в файле cookie, поле формы, URL и т. Д.), Который отличается от сеанса SSL / TLS . Таким образом, если в соединении есть разрыв (который может произойти нормально), данные сеанса пользователя будут оставаться в течение некоторого времени, пока они не установят другое соединение. В странном случае, когда идентификаторы сеанса не отслеживаются, вы должны разгрузить новые подключения к другому серверу и дождаться завершения существующих подключений или тайм-аута, прежде чем отключить этот сервер для обновления своего сертификата SSL.
Дан
Я прошу прощения за плохую формулировку. Я понял, является ли сеанс проблемой, когда следующее соединение приходит из сертификата, отличного от того, с которым был установлен сеанс. Сеанс не волнует? Я думаю, что другой сертификат может повлиять на возобновление сеанса, но у меня сложилось впечатление, что вы говорите, что сеанс не заботится о соединении. Я не знаю, в чем разница между сеансом SSL и «сеансом пользователя»? У меня сложилось впечатление, что идентификатором сеанса, который мы отслеживаем, является идентификатор сеанса SSL / TLS, который, как я думал, тоже самое, что и сеанс пользователя.
Даллас
Я думаю, что вы немного перепутали терминологию: идентификатор сессии генерируется сервером и используется для отслеживания пользователя при последующих запросах, поскольку HTTP не имеет состояния . Все соединения с сокетом TCP могут прерваться, поэтому приложение должно отслеживать пользователя, когда это происходит, что делается с помощью идентификатора сеанса . Например: безопасный вход в банк или другой защищенный сайт, нажмите на некоторые ссылки, затем отключите свою ник-карту, затем включите ее и нажмите на другую ссылку ... вы все равно войдете в систему, так как ваш идентификатор сессии отслеживается их применение.
Дан