Chrome DNS

У меня почему-то перестали открываться некоторые HTTPS сайты (не все!). При попытке открыть такой сайт в браузере появляется окно с ошибкой «Этот сайт не может обеспечить безопасное соединение». Сайты не отображаются как в Google Chrome, так и в Opera и в Яндекс Браузере. Без HTTPS некоторые сайты открываются, но не все, только те, у которых страницы доступны и по протоколу HTTPS и по протоколу HTTP.В Google Chrome ошибка при открытии HTTPS сайт выглядит так:

Этот сайт не может обеспечить безопасное соединение.
Сайт sitename.ru отправил недействительный ответ.
ERR_SSL_PROTOCOL_ERROR.

И так:

Этот сайт не может обеспечить безопасное соединение.
На сайте sitename.ru используется неподдерживаемый протокол.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH.
Клиент и сервер поддерживают разные версии протокола SSL и набора шифров. Скорее всего, сервер использует шифр RC4, который считается небезопасный.»

В Opera и Яндекс Браузер ошибка выглядит примерно также. Как мне открыть такие сайты?

Ответ

Как вы уже вероятно поняли, проблема связана с проблемами при SSL взаимодействии между вашим компьютеров и HTTPS сайтом. Причины такой ошибки могут быть довольно разные. В этой статье я попробовал собрать все методы исправления ошибки «Этот сайт не может обеспечить безопасное соединение» (This site can’t provide a secure connection, ERR_SSL_PROTOCOL_ERROR) в различных браузерах.

Сразу хочется отметить, что несмотря на то, что браузеры Google Chrome, Opera и Яндекс Браузер выпускаются разными компаниями, на самом деле все эти браузеры основаны на одном и том же движке — Chrome и проблема с ошибками открытия HTTPS сайтов в них решается одинаково.

В первую очередь нужно убедиться, что проблема не на стороне самого HTTPS сайта. Попробуйте открыть его с других устройств (телефон, планшет, домашний/рабочий компьютер и т.д.). Также проверьте, открывается ли в других браузерах, например, IE/Edge или Mozilla Firefox. В Firefox похожая ошибка обсуждалась в статье Ошибка при установлении защищённого соединения в Mozilla Firefox.

Очистите кэш и куки браузера, SSL кэш

Кэш и куки браузера могут быть частой причиной возникновения ошибок с SSL сертификатами. Рекомендуем сначала очистить в браузере кэш и куки. В Chrome нужно нажать сочетание клавиш Ctrl + Shift + Delete, выберите промежуток времени (Все время) и нажмите кнопку очистки данных (Удалить данные / Clear Data).

Чтобы очистить SSL кэш в Windows:

  1. Перейдите в раздел Панель управления -> Свойства браузера;
  2. Щелкните по вкладке ;
  3. Нажмите на кнопку Очистить SSL (Clear SSL State);
  4. Должно появится сообщение «SSL-кэш успешно очищен”;
  5. Осталось перезапустить браузер и проверить, осталась ли ошибка ERR_SSL_PROTOCOL_ERROR.

Отключите сторонние расширения в браузере

Рекомендуем отключить (удалить) сторонние расширения браузера, особенно всякие анонимайзеры, прокси, VPN, расширения антивируса и другие подобные Addon-ы, которые могут вмешиваться в прохождение трафика до целевого сайта. Посмотреть список включенных расширения в Chrome можно, перейдя в Настройки -> Дополнительные инструменты -> Расширения, или перейдя на страницу chrome://extensions/. Отключите все подозрительные расширения.

Проверьте настройки антивируса и файрвола

Если на вашем компьютере установлены антивирусная программа или межсетевой экран (часто он встроен в антивирус), возможно доступ к сайту блокируется именно ими. Чтобы понять, ограничивают ли доступ к сайту антивирусы или файрволы, попробуйте на время приостановить их работу.
Во многих современных антивирусах по-умолчанию присутствует модуль проверки SST/TLS сертификатов сайтов. Если антивирус обнаружит, что сайт использует недостаточно защищенный (или самоподписанный) сертификат или устаревшую версию протокола SSL (тот же SSL v3 или ниже), доступ к пользователя к такому сайту может быть ограничен. Попробуйте отключить сканирование HTTP/HTTPS трафика и SSL сертификатов. Как вы понимает, все зависит от того, какой антивирус и вас установлен. Например:

  • В Dr.Web блокировать доступ к сайтам может встроенный сетевой экран (SpIDer Gate);
  • В ESET NOD32 нужно отключить опцию «Включить фильтрацию протокола SSL/TLS»;
  • В Avast опция называется «Включить сканирование HTTPs» (находится в разделе Настройки -> Активная защита -> Веб экран -> Настройки -> Основные настройки).

Проверьте настройки даты и времени

Неправильная дата и время (и часового пояса) на компьютере также может быть причиной ошибки при установке защищенного соединения с HTTPS сайтами. Ведь при выполнении аутентификации система проверяет срок создания и дату истечения сертификата сайта и вышестоящего центра сертификации.

Проверьте что у вас установлено правильно время и часовой пояс. Если время постоянно сбивается – смотри статью «Сбивается время на компьютере при выключении: что делать?”.

Обновите корневые сертификаты Windows

Если ваш компьютер находится в изолированном сегменте, давно не обновлялся или на нем совсем отключена служба автоматического обновления, на вашем компьютере могут отсутствовать новые корневые доверенные сертификаты (TrustedRootCA). Рекомендуем выполнить обновление системы: установить последние обновления безопасности, в случае с Windows 7 – обязательно установить SP1 (KB976932) и обновления часовых поясов (KB2998527).

Вы можете вручную обновить корневые сертификаты по статье: Как вручную обновить корневые сертификаты в Windows (так же рекомендуем проверить хранилище сертификатов на предмет недоверенных сертификатов, это позволит предотвратить перехват вашего HTTPs трафика и ряд других проблем).

Отключите поддержку протокола QUIC

Проверьте, не включена ли в Chrome поддержка протокола QUIC (Quick UDP Internet Connections). Протокол QUIC позволяет гораздо быстрее открыть соединение и согласовать все параметры TLS (HTTPs) при подключении к сайту. Однако в некоторых случая он может вызывать проблемы с SSL подключениями. Попробуйте отключить QUIC:

  1. Перейдите на страницу: chrome://flags/#enable-quic;
  2. Найдите опцию Experimental QUIC protocol;
  3. Измените значение опции Default на Disabled;
  4. Перезапустите Chrome.

Включите поддержку протоколов TLS и SSL

И самый последний пункт – скорее всего для решения проблемы вам достаточно будет включить поддержку старых версий протоколов TLS и SSL. В большинстве случае он окажется самым эффективным, но я намеренно перенес его в конец статьи. Объясню почему.

Старые версии протоколов TLS и SSL отключены не по простой прихоти разработчиков, а в связи с наличием большого количества уязвимостей, которые позволяют злоумышленникам перехватить ваши данные в HTTPS трафике и даже видоизменить их. Бездумное включение старых протоколов существенно снижает вашу безопасность в Интернете, поэтому к этому способу нужно прибегать в последнюю очередь, если все другое точно не помогло.

Современные браузеры и ОС уже давно отказались от поддержки устаревших и уязвимых протоколов SSL/TLS (SSL 2.0, SSL 3.0 и TLS 1.1). Стандартном сейчас считаются TLS 1.2 и TLS 1.3

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

Чтобы включить старые версии протоколов SSL/TLS (еще раз отмечаю – это небезопасно):

Если все рассмотренные способы не помогли избавиться от ошибки «Этот сайт не может обеспечить безопасное соединение» также попробуйте:

    1. Проверить, что в файле C:\Windows\System32\drivers\etc\hosts отсутствуют статические записи;
    2. Попробуйте использовать публичные DNS сервера, например – DNS сервер Google. В настройках сетевого подключения в качестве предпочитаемого DNS сервера укажите IP адрес 8.8.8.8;
    3. В Панели управления -> свойства браузера, убедитесь, что для зоны Интернет выбрана уровень безопасности Выше среднего или Средний. Если выбрана зона Высокий, некоторые SSL подключения могут блокироваться браузером.
    4. Возможно проблема связана с сертификатом сайта – проверьте его с помощью онлайн утилит SSL Checker;
    5. В Chrome проверьте, включен ли протокол TLS 1.3:
      • В адресной строке перейдите в раздел настроек chrome://flags;
      • С помощью поиска найдите параметр TLS 1.3;
      • Убедитесь, что он включен (Enabled) или находится в состоянии Default. Если отключен – его нужно включить.

Протокол TLS шифрует интернет-трафик всех видов, тем самым делая безопасными общение и продажи в интернете. Мы расскажем о том, как протокол работает и что нас ждет в будущем.

Что такое SSL

SSL или слой защищенных сокетов было оригинальным названием протокола, который разработала компания Netscape в середине 90-х. SSL 1.0 никогда не был публично доступным, а в версии 2.0 были серьезные недостатки. Протокол SSL 3.0, выпущенный в 1996, был полностью переделан и задал тон следующей стадии развития.

Что такое TLS

Когда следующую версию протокола выпустили в 1999, ее стандартизировала специальная рабочая группа проектирования сети Интернет и дала ей новое название: защита транспортного уровня, или TLS. Как говорится в TLS-документации, «разница между этим протоколом и SSL 3.0 не критичная». TLS и SSL формируют постоянно обновляемую серию протоколов, и их часто объединяют под названием SSL/TLS.

Протокол TLS шифрует интернет-трафик любого вида. Самый распространенный вид — веб-трафик. Вы знаете, когда ваш браузер устанавливает соединение по TLS — если ссылка в адресной строке начинается с «https».

TLS также используется другими приложениями — например, в почте и системах телеконференций.

Как работает TLS

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

Самый безопасный метод шифрования — это асимметричное шифрование. Для этого требуется 2 ключа, 1 публичный и 1 приватный. Это файлы с информацией, чаще всего очень большие числа. Механизм сложный, но если попросту, вы можете использовать публичный ключ, чтобы шифровать данные, но вам нужен приватный ключ, чтобы расшифровывать их. Два ключа связаны с помощью сложной математической формулы, которую сложно хакнуть.

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

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

Процесс, согласно которому клиент и сервер договариваются о ключе сессии, называется рукопожатием. Это момент, когда 2 общающихся компьютера представляются другу другу.

Процесс TLS-рукопожатия

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

  1. Клиент связывается с сервером и запрашивает безопасное соединение. Сервер отвечает списком шифров — алгоритмическим набором для создания зашифрованных соединений — которым он знает, как пользоваться. Клиент сравнивает список со своим списком поддерживаемых шифров, выбирает подходящий и дает серверу знать, какой они будут использовать вдвоем.
  2. Сервер предоставляет свой цифровой сертификат — электронный документ, подписанный третьей стороной, который подтверждает подлинность сервера. Самая важная информация в сертификате — это публичный ключ к шифру. Клиент подтверждает подлинность сертификата.
  3. Используя публичный ключ сервера, клиент и сервер устанавливают ключ сессии, который они оба будут использовать на протяжении всей сессии, чтобы шифровать общение. Для этого есть несколько методов. Клиент может использовать публичный ключ, чтобы шифровать произвольное число, которое потом отправляется на сервер для расшифровки, и обе стороны потом используют это число, чтобы установить ключ сессии.

Ключ сессии действителен только в течение одной непрерывной сессии. Если по какой-то причине общение между клиентом и сервером прервется, нужно будет новое рукопожатие, чтобы установить новый ключ сессии.

Уязвимости протоколов TLS 1.2 и TLS 1.2

TLS 1.2 — самая распространенная версия протокола. Эта версия установила исходную платформу опций шифрования сессий. Однако, как и некоторые предыдущие версии протокола, этот протокол разрешал использовать более старые техники шифрования, чтобы поддерживать старые компьютеры. К сожалению, это привело к уязвимостям версии 1.2, так как эти более старые механизмы шифрования стали более уязвимыми.

Например, протокол TLS 1.2 стал особенно уязвимым к атакам типа активного вмешательства в соединение, в которых хакер перехватывает пакеты данных посреди сессии и отправляет их после прочтения или изменения их. Многие из этих проблем проявились за последние 2 года, поэтому стало необходимым срочно создать обновленную версию протокола.

TLS 1.3

Версия 1.3 протокола TLS, которая скоро будет финализирована, решает множество проблем с уязвимостями тем, что отказывается от поддержки устаревших систем шифрования.
В новой версии есть совместимость с предыдущими версиями: например, соединение откатится до версии TLS 1.2, если одна из сторон не сможет использовать более новую систему шифрования в списке разрешенных алгоритмов протокола версии 1.3. Однако при атаке типа активного вмешательства в соединение, если хакер принудительно попытается откатить версию протокола до 1.2 посреди сессии, это действие будет замечено, и соединение прервется.

Как включить поддержку TLS 1.3 в браузерах Google Chrome и Firefox

Firefox и Chrome поддерживают TLS 1.3, но эта версия не включена по умолчанию. Причина в том, что она существует пока только в черновом варианте.

Mozilla Firefox

Введите about:config в адресную строку браузера. Подтвердите, что вы осознаете риски.

  1. Откроется редактор настроек Firefox.
  2. Введите в поиске security.tls.version.max
  3. Поменяйте значение на 4, сделав двойной щелчок мышью на нынешнее значение.


Google Chrome

  1. Введите chrome://flags/ в адресную строку браузера, чтобы открыть панель с экспериментами.
  2. Найдите опцию #tls13-variant
  3. Нажмите на меню и поставьте Enabled (Draft).
  4. Перезапустите браузер.

Как проверить, что ваш браузер использует версию 1.2

Напоминаем, что версия 1.3 еще не используется публично. Если вы не хотите
использовать черновой вариант, вы можете остаться на версии 1.2.

Чтобы проверить, что ваш браузер использует версию 1.2, проделайте те же шаги, что и в инструкциях выше, и убедитесь, что:

  • Для Firefox значение security.tls.version.max равно 3. Если оно ниже, поменяйте его на 3, сделав двойной щелчок мышью на нынешнее значение.
  • Для Google Chrome: нажмите на меню браузера — выберите Settings — выберите Show advanced settings — опуститесь до раздела System и нажмите на Open proxy settings…:
  • В открывшемся окне нажмите на вкладку Security и проверьте, чтобы для поля Use TLS 1.2 стояла галочка. Если не стоит — поставьте и нажмите OK:

Изменения войдут в силу после того, как вы перезагрузите компьютер.

Быстрый инструмент для проверки версии протокола SSL/TLS браузера

Зайдите в онлайн-инструмент проверки версии протокола SSL Labs. Cтраница покажет в реальном времени используемую версию протокола, и подвержен ли браузер каким-то уязвимостям.

Источники: перевод статьи из издания CSO и перевод статьи из технологического блога Ghacks