Tls certificate changed ошибка

Since recently, my Claws Mail client pops up a message «SSL/TSL certificate changed» every time it tries to connect to my gmail account (at pop.gmail.com), with two options: «Cancel connection» and «Accept and Save». I use accept and save, but after 5 minutes the situation repeats. I know I can set skip_ssl_cert_check=1 in the configuration file clawsrc, but I don’t fully understand security implications for that. What is particularly strange for me, googling on this pop-up message yields absolutely nothing, as if I am the first Claws and gmail user to encounter this problem. I use Claws version 3.16.0, ported in Windows 10, if that helps.

asked Jun 20, 2018 at 12:54

Maximko's user avatar

4

To get rid of this annoying repeated message, click on Configuration -> Preferences for Current Account, then click on SSL/TLS and SCROLL DOWN that panel to reveal some hidden checkboxes. Check the box labelled «Automatically accept valid SSL/TLS certificates» and clear the box labelled «Use non-blocking SSL/TLS.» It took me forever to realize there were additional settings at the bottom of this panel.

answered Feb 5, 2019 at 3:20

Rey Lefebvre's user avatar

2

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

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

Одной из таких ошибок является «Недопустимый сертификат TLS» в Linux.

К сожалению, на этот вопрос нет универсального ответа. Однако есть несколько потенциальных решений, которые вы можете попробовать, и здесь я планирую выделить их для вас.

недопустимый tls-сертификат

В моем случае я заметил проблему при добавлении репозитория Flathub через терминал, шаг, который позволяет вам получить доступ к огромной коллекции Flatpak, когда настройка Flatpak.

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

Некоторые пользователи заметили эту проблему при использовании рекомендованной их организацией службы VPN для работы в Linux.

Итак, как это исправить? Почему это проблема?

Ну, технически это одна из двух вещей:

  • Ваша система не принимает сертификат (и сообщает, что он недействителен).
  • Сертификат не соответствует домену, к которому подключается пользователь.

Если это второе, вам придется обратиться к администратору веб-сайта и исправить это с их стороны.

Но если это первое, у вас есть несколько способов справиться с этим.

1. Исправьте «Недопустимый сертификат TLS» при использовании Flatpak или добавлении онлайн-аккаунтов GNOME.

Если вы пытаетесь добавить пульт Flathub или новое приложение Flatpak и замечаете ошибку в терминале, вы можете просто ввести:

sudo apt install --reinstall ca-certificates

Это должно переустановить доверенные сертификаты ЦС на случай, если какая-то проблема со списком возникла.

Устранение неполадок с tls-сертификатом

В моем случае при попытке добавить репозиторий Flathub я столкнулся с ошибкой, которая была устранена путем ввода вышеуказанной команды в терминале.

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

2. Исправьте «Недопустимый сертификат TLS» при использовании Work VPN.

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

Обратите внимание, что вам нужно, чтобы служба VPN или администратор вашей организации предоставили общий доступ к версии корневого сертификата .CRT, чтобы начать работу.

Далее вам нужно будет пройти свой путь к /usr/local/share/ca-сертификаты каталог.

Вы можете создать в нем каталог и использовать любое имя для идентификации сертификата вашей организации. Затем добавьте файл .CRT в этот каталог.

Например, это usr/local/share/ca-certificates/organization/xyz.crt.

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

После того, как вы добавили необходимый сертификат, все, что вам нужно сделать, это обновить список поддерживаемых сертификатов, введя:

sudo update-ca-certificates

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

Подводя итог

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

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

Вы когда-нибудь сталкивались с этой ошибкой? Как ты это починил? Известны ли вам другие решения этой проблемы (возможно, что-то, за чем легко следовать)? Дайте мне знать ваши мысли в комментариях ниже.

Оригинал статьи

Ошибки браузера и предупреждения

Слишком часто при доступе к веб-сайтам встречаются такие сообщения об ошибках браузера:

Chrome trust warning

Эти сообщения обычно начинаются с жирного заголовка, в котором говорится, что Ваше соединение не является частным or Предупреждение: потенциальная угроза безопасности впереди. Эти сообщения могут расстраивать пользователей и владельцев веб-сайтов, особенно когда владелец приложил усилия для защиты своего веб-сайта с помощью SSL /TLS сертификат. Часто эти ошибки вызваны неправильной конфигурацией сервера, которую легко исправить, если вы знаете основную причину. В этом руководстве мы рассмотрим некоторые распространенные ошибки в конфигурации и связанные с ними сообщения об ошибках в различных веб-браузерах. Для создания этих снимков экрана использовались следующие браузеры:

  • Google Chrome 76.0.3809.100 (macOS 10.14.6)
  • Firefox 68.0.1 (macOS 10.14.6)
  • Safari 12.1.2 (macOS 10.14.6)
  • Edge 44.17763.1.0 (Windows 10 Корпоративная)
  • Internet Explorer 11.379.11763.0 (Windows 10 Корпоративная)

Ситуации, которые мы рассмотрим, подробно описаны в содержании ниже.

Сравнить Сертификаты для подписи электронной почты, клиентов и документов от SSL.com по цене всего от 20.00 долларов в год.

СРАВНЕНИЕ

Сертификат с истекшим сроком действия

В этих случаях на сервере установлен сертификат, который истек срок действия и нуждается в замене:

Решение: Продлить сертификат сайта. Конечные пользователи, столкнувшиеся с этой ошибкой, также должны подтвердить, что дата и время установлены на их компьютере правильно.

Доменное имя не соответствует сертификату

В этих случаях веб-сервер представляет сертификат, который не соответствует имени домена, к которому пользователь пытается получить доступ:

Решение: Убедитесь, что распространенное имя и / или альтернативное имя субъекта указанное в сертификате соответствует доменному имени веб-сайта.

Неполная цепь доверия

Если веб-сервер не имеет полного цепь доверия включая все необходимые промежуточные сертификаты, эти ошибки могут привести к:

Решение: Убедитесь, что на вашем сервере установлена ​​полная цепочка сертификатов. Пожалуйста, смотрите наш статья о диагностике и устранении этой проблемы чтобы получить больше информации.

Аннулированный сертификат

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

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

Мы надеемся, что это руководство было полезно для того, чтобы помочь вам расшифровать (иногда загадочные) сообщения об ошибках, выдаваемые веб-браузерами, когда они сталкиваются с проблемным SSL /TLS монтаж. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами по электронной почте на Support@SSL.com, вызов 1-877-SSL-SECURE, или просто нажмите ссылку чата в правом нижнем углу этой страницы. Вы также можете найти ответы на многие распространенные вопросы поддержки в нашем база знаний. Спасибо, что выбрали SSL.com!

Windows 10, version 1903, all editions Windows 10, version 1809, all editions Windows Server 2019, all editions Windows 10, version 1803, all editions Windows 10, version 1709, all editions Windows 10, version 1703, all editions Windows 10, version 1607, all editions Windows Server 2016, all editions Windows 10 Windows 8.1 Windows Server 2012 R2 Windows Server 2012 Windows 7 Service Pack 1 Windows Server 2008 R2 Windows Server 2008 Service Pack 2 Windows Embedded 8 Standard Windows Embedded Standard 7 Service Pack 1 Windows Embedded POSReady 7 Еще…Меньше

Проблемы

При попытке соединения может происходить сбой или тайм-аут TLS. Вы также можете получить одну или несколько из указанных ниже ошибок.

  • «Запрос прерван: не удалось создать безопасный канал SSL/TLS»

  • Ошибка 0x8009030f

  • Ошибка, зарегистрированная в журнале системных событий для события SCHANNEL 36887 с кодом предупреждения 20 и описанием, «С удаленной конечной точки получено оповещение о неустранимой ошибке. Определенный в протоколе TLS код оповещения о неустранимой ошибке: 20».​

Причина

В связи с принудительным применением CVE-2019-1318 из соображений безопасности все обновления для поддерживаемых версий Windows, выпущенные 8 октября 2019 г. или позже, применяют Extended Master Secret (EMS) для возобновления, как определено в RFC 7627. При подключении к сторонним устройствам и ОС, которые не соответствуют требованиям, могут возникать проблемы и сбои.

Дальнейшие действия

После полного обновления соединения между двумя устройствами под управлением любой поддерживаемой версии Windows не должны иметь этой ошибки. Для этой ошибки обновление Windows не требуется. Эти изменения необходимы для устранения неполадок безопасности и соответствия требованиям безопасности.

Все сторонние операционные системы, устройства и службы, которые не поддерживают возобновление EMS, могут проявлять проблемы, связанные с подключениями TLS. Обратитесь к администратору, изготовителю или поставщику услуг за обновлениями, которые полностью поддерживают возобновление EMS, как определено в RFC 7627.

Примечание. Корпорация Майкрософт не рекомендует отключать EMS. Если служба EMS была явным образом отключена ранее, ее можно снова включить, задав следующие значения в разделе реестра:

HKLMSystemCurrentControlSetControlSecurityProvidersSchannel

На сервере TLS — DisableServerExtendedMasterSecret: 0

На клиенте TLS — DisableClientExtendedMasterSecret: 0

Дополнительные сведения для администраторов

1. На устройстве с Windows, которое пытается установить TLS-подключение к устройству, которое не поддерживает Extended Master Secret (EMS), при согласовании комплектов шифров TLS_DHE_* может иногда возникать сбой, приблизительно в 1 попытке из 256. Чтобы устранить эту ошибку, реализуйте одно из следующих решений, указанных в порядке предпочтения.

  • Включите поддержку расширений Extend Master Secret (EMS) при выполнении TLS-подключений как в клиентской, так и в серверной операционной системе.

  • Для операционных систем, которые не поддерживают EMS, удалите комплекты шифров TLS_DHE_* из списка комплектов шифров в ОС клиентского устройства TLS. Инструкции о том, как это сделать в Windows, см в разделе Определение приоритета для комплектов шифров Schannel.

2. Операционные системы, которые отправляют сообщения запроса сертификата только в режиме полного подтверждения после возобновления, не соответствуют стандарту RFC 2246 (TLS 1.0) или RFC 5246 (TLS 1.2) и приводят к сбою каждого подключения. Возобновление не гарантируется в соответствии со спецификацией RFC, но оно может быть использовано по усмотрению клиента и сервера TLS. При возникновении этой проблемы необходимо обратиться к производителю или поставщику услуг за обновлениями, которые соответствуют стандартам RFC.

3. FTP-серверы или клиенты, не совместимые с RFC 2246 (TLS 1.0) и RFC 5246 (TLS 1.2), могут не передавать файлы при возобновлении или сокращенном подтверждении, и это приведет к сбою каждого подключения. При возникновении этой проблемы необходимо обратиться к производителю или поставщику услуг за обновлениями, которые соответствуют стандартам RFC.

Затронутые обновления

Эта проблема может возникать для любого последнего накопительного обновления (LCU) или ежемесячных накопительных пакетов, выпущенных 8 октября 2019 года или позже, для затронутых платформ:

  • KB4517389 LCU для Windows 10, версия 1903.

  • KB4519338 LCU для Windows 10 версии 1809 и Windows Server 2019.

  • KB4520008 LCU для Windows 10, версия 1803.

  • KB4520004 LCU для Windows 10, версия 1709.

  • KB4520010 LCU для Windows 10, версия 1703.

  • KB4519998 LCU для Windows 10 версии 1607 и Windows Server 2016.

  • KB4520011 LCU для Windows 10, версия 1507.

  • KB4520005 Ежемесячный накопительный пакет для Windows 8.1 и Windows Server 2012 R2.

  • KB4520007 Ежемесячный накопительный пакет обновления для Windows Server 2012.

  • KB4519976 Ежемесячный накопительный пакет для Windows 7 SP1 и Windows Server 2008 R2 SP1.

  • KB4520002 Ежемесячный накопительный пакет обновления для Windows Server 2008 SP2

Эта проблема может возникать для следующих обновлений системы безопасности, выпущенных 8 октября 2019 года, для затронутых платформ:

  • KB4519990 Обновление для системы безопасности для Windows 8.1 и Windows Server 2012 R2.

  • KB4519985 Обновление для системы безопасности для Windows Server 2012 и Windows Embedded 8 Standard.

  • KB4520003 Обновление для системы безопасности для Windows 7 SP1 и Windows Server 2008 R2 SP1

  • KB4520009 Обновление для системы безопасности Windows Server 2008 SP2

Нужна дополнительная помощь?

Информационная безопасность, Разработка систем связи, Сетевые технологии, IT-стандарты


Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/

Первоначально разработанный для браузеров, SSL/TLS-протокол позже стал стандартом де-факто вообще для всех защищенных интернет-коммуникаций. Сейчас он используется для удаленного администрирования виртуальной инфра­структуры, развернутой в облаке, для передачи платежных реквизитов покупателя от серверов электронной коммерции к платежным процессорам, таким как PayPal и Amazon, для пересылки локальных данных в облачное хранилище, сохранения переписки в мессенджерах и аутентификации серверов в мобильных приложениях iOS и Android.

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

SSL/TLS-протокол: хотели как лучше…

В теории, защищённое SSL/TLS-протоколом соединение должно обеспечивать конфиденциальность, достоверность и целостность коммуникаций клиентского и серверного софта, – даже в условиях присутствия активного продвинутого злоумышленника из сети: когда сеть полностью захвачена врагом, DNS отравлен, а точки доступа и маршрутизаторы, коммутаторы и WiFi контролируются злоумышленником; злоумышленником, который помимо всего прочего контролирует SSL/TLS-бэкэнд. Кроме того, когда клиентский софт пытается подключиться к законному серверу, – злоумышленник может подменить сетевой адрес сервера (например, через отравление DNS), и вместо законного сервера, перенаправить клиента на свой злонамеренный сервер.

Безопасность коммуникаций в таких суровых условиях, как известно, целиком зависит от адекватности проверки криптографического сертификата, предоставленного сервером при установке соединения. В том числе от адекватности реализации набора шифров (ciphersuite), которыми клиент и сервер пользуются при обмене данными. Для того чтобы SSL/TLS-соединение было полностью безопасным, клиентский софт, в числе прочего, должен тщательно удостовериться, что:

  • сертификат выдан действующим органом сертификации;
  • срок его действия не истёк (или сертификат не был отозван);
  • в списке перечисленных в сертификате имён присутствует тот домен, к которому производится подключение.

…а получилось как всегда: примеры провальной проверки SSL/TLS-сертификата

Однако во многих приложениях и библиотеках, для которых безопасность коммуникаций очень критична, процедура проверки SSL/TLS-сертификата, – и даже EV-SSL, сертификата с расширенной проверкой [4], – полностью провальная. Во всех популярных операционных системах: Linux, Windows, Android и iOS. Среди уязвимого софта, библиотек и middleware-сервисов можно выделить следующие [1]:

  • Amazon’овская Java-библиотека EC2 и все облачные фронтэнд-клиенты построенные на её основе.
  • Amazon’овский и PayPal’овский торговый SDK, ответственный за доставку платёжных реквизитов от сайтов (на которых развёрнута инфраструктура онлайн-коммерции) к платёжным шлюзам.
  • Интегрированные «корзины», такие как osCommerce, ZenCart, Ubercart и PrestaShop, которые не проверяют сертификаты вообще.
  • AdMob-код используемый мобильным софтом для показа контекстной рекламы.
  • Интерфейсные фронтэнд-компоненты ElephantDrive и FilesAnywhere, ответственные за взаимодействие с облачным хранилищем.
  • Android’ная библиотека Pusher и весь софт, который использует Pusher API для управления обменом мгновенными сообщениями (например, GitHub’овский Gaug.es).
  • Apache HttpClient (версия 3.x); Apache Libcloud; и все клиентские подключения к серверам Apache ActiveMQ и т.п.
  • SOAP middleware-сервисы Java, в том числе Apache Axis, Axis 2, Codehaus XFire; а также весь софт, который на базе этих middleware-сервисов построен.
  • API-инструменты Elastic Load Balancing.
  • Weberknecht-реализация WebSockets’ов.
  • А также весь мобильный софт, построенный на базе перечисленных выше библиотек и middleware-сервисов (чтобы понять, что такое middleware-сервисы, смотри рис. 1); в том числе iOS-клиент хостинг-провайдера Rackspace.

Рисунок 1. Что такое middleware-сервисы

Кроме того, в [2] перечислено ещё больше сотни уязвимых мобильных приложений (см. рис. 2). В том числе: Android’s Google Cloud Messaging, Angie’s List Business Center Passwords, AT&T Global Network Client, CapitalOne Spark Pay, Cisco OnPlus (remote access), Cisco Technical Support, Cisco Webex, Cisco WebEx Passwords, Dominos Pizza, E-Trade, Freelancer, Google Earth, Huntington Mobile (Bank), Intuit Tax Online Accountant, iTunes Connect, Microsoft Skype, Oracle Now, Pinterest, SafeNet (VPN client), SouthWest Airlines, Uber, US Bank – Access Online, WesternUnion, WordPress, Yahoo! Finance, Yahoo! Mail.

Рисунок 2. Небольшая выборка из списка уязвимых мобильных приложений

Логические уязвимости SSL/TLS-протокола

SSL/TLS-соединения всего этого и многого другого софта уязвимы для широкого спектра MiTM-атак. При этом, MiTM-атаку можно провести, зачастую, даже без подделки сертификатов и без похищения приватных ключей, которыми серверы подписывают свои сертификаты. MiTM-атаку можно провести – просто эксплуатируя логические уязвимости, которые присутствуют в процедуре проверки SSL/TLS-сертификата на стороне клиентского софта. В результате MiTM-злоумышленник может, например, собирать токены авторизации, номера кредитных карт, имена, адреса и т.п. – у любого продавца, который использует уязвимые веб-приложения обработки платежей.

Поставщики мобильного софта, которые берут за основу сэмпл-код AdMob для связи своих приложений с AdMob-аккаунтом, тоже уязвимы, – они позволяют атакующему захватывать учётные данные, и получать доступ ко всем его Google-сервисам. К примеру, из-за некорректной проверки сертификатов в таких мессенджерах как Trillian и AIM, MiTM-злоумышленник может похитить учётные данные для входа ко всем сервисам Google (включая Gmail), Yahoo!; и также к сервисам Windows Live (в т.ч. SkyDrive). Среди других уязвимостей, которыми страдает современный небраузерный веб-софт: использование неправильных регулярных выражений при сравнении имени хоста; игнорирование результатов проверки корректности сертификата; случайное или преднамеренное отключение проверки. [1]

Другие распространённые уязвимости реализации SSL/TLS-протокола

Ну и конечно же нельзя забывать о том, что даже если в реализации SSL/TLS-протокола нет логических ошибок (если конечно кто-то в это ещё верит), то защиту можно обойти посредством похищения приватного ключа [12], посредством применения 0day-эксплойтов к таким вещам как клавиатуры, браузеры, операционные системы, утилиты и прошивки [3]; посредством компрометации BGP-маршрутизации [10]; или атаковать SSL/TLS по аппаратным (см. рис. 3) [8] и/или программным [9] обходным каналам.

Рисунок 3. Атака на SSL по аппаратным обходным каналам

Кроме того, злоумышленники могут выполнять практически невидимые MiTM-атаки, злоупотребляя механизмом кэширования SSL/TLS-сеансов, реализованным в классе SSLSessionCache. Этот механизм проверяет достоверность сертификатов только при первоначальном соединении; и при этом не способен должным образом аннулировать сеанс связи после удаления сертификатов с устройства. Кроме того, после перезагрузки Android-устройства (через опции «Перезапуск» или «Отключить питание») можно продолжать видеть зашифрованный трафик некоторых приложений, которые после перезагрузки не запускались, но до перезагрузки работали. Так например с Google Maps происходит. В [2] описано, как благодаря этим недочётам кэширования, злоумышленник может совершенно прозрачно для пользователя устанавливать и удалять «невидимые сертификаты», и затем устанавливать сетевое соединение с любым приложением.

Рисунок 4. Ретроспектива уязвимого шифрования

Среди других распространённых уязвимостей реализации SSL/TLS-протокола можно отметить уязвимое шифрование (см. рис. 4) [5], повторное использования GCM (Galois/Counter Mode; счётчик с аутентификацией Галуа) [6], хитрость с CNG (CryptoAPI-NG) в Schannel (см. рис. 5) [7], некорректную проверку цепочки доверия [2], некорректную проверка имени хоста [11].

Рисунок 5. Хитрость с CNG: вытягиваем секреты из Schannel

Некорректная проверка цепочки доверия представляет собой ситуацию, когда веб-приложение принимает абсолютно любой сертификат, в котором указано корректное имя хоста, не проверяя при этом каким центром сертификации он был подписан. Это позволяет перехватывать и дешифровывать пароли и/или номера кредитных карт. А в некоторых случаях даже делать инъекцию вредоносного кода. В Android-софт данная уязвимость проникает, например когда создаётся кастомизированный X509TrustManger-интерфейс, который игнорирует исключения CertificateException. Или когда разработчик софта вставляет в код WebViews-компонента вызов метода SslErrorHandler.proceed(). [2]

Некорректная проверка имени хоста представляет собой ситуацию, когда веб-приложение принимает сертификат, не удостоверившись в том, что хост, с которого этот сертификат пришёл, присутствует в списке доверенных хостов. В Android-софт данная уязвимость проникает, например когда создаётся HostnameVerifier-интерфейс, который при любых условиях возвращает TRUE. Или когда разработчик софта в вставляет в код WebViews-компонента вызов метода SslErrorHandler.proceed(). [2]

Коренная причина существования уязвимостей в SSL/TLS-протоколе

Коренная причина существования подавляющего большинства перечисленных уязвимостей – ужасный API-дизайн SSL/TLS-библиотек (в том числе JSSE, OpenSSL, и GnuTLS). А также не менее ужасный дизайн библиотек передачи данных (таких как cURL, Apache HttpClient и urllib), каждая из которых представляет собой высокоуровневую обёртку для SSL/TLS-библиотек. Не говоря уже о middleware-сервисах (таких как Apache Axis, Axis 2, или Codehaus XFire), которые ещё более высокоуровневой обёрткой являются, и которые увеличивают «снежный ком» ужасного дизайна ещё больше. Вместо того чтобы вести с прикладным разработчиком (зачастую далёким от системного программирования) диалог на понятном ему языке (в терминах конфиденциальности и аутентификации), абстрагировано от низкоуровневых подробностей реализации SSL/TLS-протокола, эти API вываливают на бедолагу кучу низкоуровневых SSL/TLS-параметров, непонятных ему. Требуют от высокоуровневого софта, чтобы он правильно выставлял низкоуровневые опции; реализовывал функции проверки имени хоста и заботился об интерпретации возвращаемых низкоуровневыми операциями значений.

В результате, прикладные разработчики используют SSL/TLS API неправильно: ошибочно интерпретируют многообразие их параметров, опций, побочных эффектов и возвращаемых значений. Например [1]:

  • Amazon’овская PHP-библиотека Flexible Payments Service пытается включить проверку имени хоста – посредством установки параметра CURLOPT_SSL_VERIFYHOST в значение TRUE (в cURL-библиотеке). Однако корректное значение по умолчанию для этого параметра – 2; если же присвоить ему значение TRUE, то этому параметру незаметно для разработчика присваивается значение 1, и т.о. проверка сертификата отключается.
  • PHP-библиотека PayPal Payments Standard – приобрела ту же самую ошибку; причём в тот момент, когда предыдущая, уязвимая, реализация обновлялась (т.е. одну ошибку убрали, другую добавили).
  • Другой пример – это Lynx, тексто-ориентированный браузер. Он проверяет самоподписанные сертификаты, – но только в том случае, если GnuTLS’ная функция проверки сертификата возвращает отрицательное значение. Однако эта самая функция для некоторых ошибок возвращает 0; в том числе в тех случаях, когда сертификаты подписаны недоверенным органом. Из-за этого цепочка проверки доверия в Lynx – нарушена.

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

Например, в JSSE (Java Secure Socket Extension) расширенный интерфейс SSLSocketFactory API – молча пропускает проверку имени хоста, если поле «algorithm» в SSL-клиенте установлено в NULL или в пустую строку, – а не в HTTPS. Хотя данное обстоятельство упоминается в справочном руководстве JSSE, многие Java-реализации SSL-протоколов используют SSLSocketFactory без выполнения проверки имени хоста…

Ложка мёда в бочку дёгтя

Т.о., по факту получается, что в большинстве современного небраузерного веб-софта проверка SSL/TLS-сертификатов либо отключена совсем, либо реализована неправильно. На рисунке 7 представлена классификация актуальных уязвимостей SSL/TLS-протокола. Некоторые из этих уязвимостей, но не все, были описаны и/или упомянуты выше. Ознакомиться с упомянутыми, но неописанными уязвимостями – можно почитав материалы, перечисленные в библиографии.

Рисунок 6. Классификация актуальных для SSL/TLS уязвимостей

Ну и чтобы добавить ложку мёда в бочку дёгтя, стоит отметить, что в [1] подробно/понятно/популярно/грамотно описано, как SSL реализовываться должен, со ссылкой на RFC. Лучшего описания, которое бы технически точным и одновременно понятным было, мы не встречали. Также в [1] разбираются самые распространённые SSL-библиотеки, с классификацией по уровню абстрагирования (низкоуровневые/высокоуровневые). Всё с диаграммами и лаконичными алгоритмами в псевдокоде. Подробно уязвимости конкретных продуктов описаны, с приведением программного кода некорректного, и указанием ошибок. Так что если вдруг у кого-то в очередной раз возникнет желание создать такую реализацию SSL/TLS-фреймворка, которая станет исключением из поговорки «хотели как лучше, а получилось как всегда», то [1] – идеальное для этого начало.

Библиография

1. Martin Georgiev, Rishita Anubhai, Subodh Iyengar. The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software // Proceedings of the 2012 ACM conference on computer and communications security. 2012. pp. 38-49.
2. Tony Trummer. Mobile SSL Failures // Proceedings of the HITB Security Conference. 2015.
3. Kellen Evan Person. How Ciphersuites Work: TLS in Pieces // 2017.
4. Catalin Cimpanu. Extended Validation (EV) Certificates Abused to Create Insanely Believable Phishing Sites // BleepingComputer. 2017.
5. David Adrian. A Retrospective on the Use of Export Cryptography // Black Hat. 2016.
6. Sean Devlin. Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS // Black Hat. 2016.
7. Jake Kambic. Cunning with CNG: Soliciting Secrets from Schannel // Black Hat. 2016.
8. Valeria Bertacco. Torturing OpenSSL // Black Hat. 2012.
9. Tom van Goethem. HEIST: HTTP Encrypted Information Can Be Stolen Through TCP-Windows // Black Hat. 2016.
10. Artyom Gavrichenkov. Breaking Https With BGP Hijacking // Black Hat. 2016.
11. Chris Stone, Tom Chothia. Spinner: Semi-Automatic Detection of Pinning without Hostname Verification // Proceedings of the Annual Computer Security Applications Conference (ACSAC) 2017.
12. Marco Ortisi. Recover a RSA Private Key from a TLS Session with Perfect Forward Secrecy // Black Hat. 2016.

PS. Первоначально статья была опубликована на «Хакере».

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

Одной из таких ошибок является «Недопустимый сертификат TLS» в Linux.

К сожалению, на этот вопрос нет универсального ответа. Однако есть несколько потенциальных решений, которые вы можете попробовать, и здесь я планирую выделить их для вас.

недопустимый tls-сертификат

В моем случае я заметил проблему при добавлении репозитория Flathub через терминал, шаг, который позволяет вам получить доступ к огромной коллекции Flatpak, когда настройка Flatpak.

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

Некоторые пользователи заметили эту проблему при использовании рекомендованной их организацией службы VPN для работы в Linux.

Итак, как это исправить? Почему это проблема?

Ну, технически это одна из двух вещей:

  • Ваша система не принимает сертификат (и сообщает, что он недействителен).
  • Сертификат не соответствует домену, к которому подключается пользователь.

Если это второе, вам придется обратиться к администратору веб-сайта и исправить это с их стороны.

Но если это первое, у вас есть несколько способов справиться с этим.

1. Исправьте «Недопустимый сертификат TLS» при использовании Flatpak или добавлении онлайн-аккаунтов GNOME.

Если вы пытаетесь добавить пульт Flathub или новое приложение Flatpak и замечаете ошибку в терминале, вы можете просто ввести:

sudo apt install --reinstall ca-certificates

Это должно переустановить доверенные сертификаты ЦС на случай, если какая-то проблема со списком возникла.

Устранение неполадок с tls-сертификатом

В моем случае при попытке добавить репозиторий Flathub я столкнулся с ошибкой, которая была устранена путем ввода вышеуказанной команды в терминале.

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

2. Исправьте «Недопустимый сертификат TLS» при использовании Work VPN.

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

Обратите внимание, что вам нужно, чтобы служба VPN или администратор вашей организации предоставили общий доступ к версии корневого сертификата .CRT, чтобы начать работу.

Далее вам нужно будет пройти свой путь к /usr/local/share/ca-сертификаты каталог.

Вы можете создать в нем каталог и использовать любое имя для идентификации сертификата вашей организации. Затем добавьте файл .CRT в этот каталог.

Например, это usr/local/share/ca-certificates/organization/xyz.crt.

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

После того, как вы добавили необходимый сертификат, все, что вам нужно сделать, это обновить список поддерживаемых сертификатов, введя:

sudo update-ca-certificates

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

Подводя итог

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

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

Вы когда-нибудь сталкивались с этой ошибкой? Как ты это починил? Известны ли вам другие решения этой проблемы (возможно, что-то, за чем легко следовать)? Дайте мне знать ваши мысли в комментариях ниже.

Оригинал статьи

Ошибки браузера и предупреждения

Слишком часто при доступе к веб-сайтам встречаются такие сообщения об ошибках браузера:

Chrome trust warning

Эти сообщения обычно начинаются с жирного заголовка, в котором говорится, что Ваше соединение не является частным or Предупреждение: потенциальная угроза безопасности впереди. Эти сообщения могут расстраивать пользователей и владельцев веб-сайтов, особенно когда владелец приложил усилия для защиты своего веб-сайта с помощью SSL /TLS сертификат. Часто эти ошибки вызваны неправильной конфигурацией сервера, которую легко исправить, если вы знаете основную причину. В этом руководстве мы рассмотрим некоторые распространенные ошибки в конфигурации и связанные с ними сообщения об ошибках в различных веб-браузерах. Для создания этих снимков экрана использовались следующие браузеры:

  • Google Chrome 76.0.3809.100 (macOS 10.14.6)
  • Firefox 68.0.1 (macOS 10.14.6)
  • Safari 12.1.2 (macOS 10.14.6)
  • Edge 44.17763.1.0 (Windows 10 Корпоративная)
  • Internet Explorer 11.379.11763.0 (Windows 10 Корпоративная)

Ситуации, которые мы рассмотрим, подробно описаны в содержании ниже.

Сравнить Сертификаты для подписи электронной почты, клиентов и документов от SSL.com по цене всего от 20.00 долларов в год.

СРАВНЕНИЕ

Сертификат с истекшим сроком действия

В этих случаях на сервере установлен сертификат, который истек срок действия и нуждается в замене:

Решение: Продлить сертификат сайта. Конечные пользователи, столкнувшиеся с этой ошибкой, также должны подтвердить, что дата и время установлены на их компьютере правильно.

Доменное имя не соответствует сертификату

В этих случаях веб-сервер представляет сертификат, который не соответствует имени домена, к которому пользователь пытается получить доступ:

Решение: Убедитесь, что распространенное имя и / или альтернативное имя субъекта указанное в сертификате соответствует доменному имени веб-сайта.

Неполная цепь доверия

Если веб-сервер не имеет полного цепь доверия включая все необходимые промежуточные сертификаты, эти ошибки могут привести к:

Решение: Убедитесь, что на вашем сервере установлена ​​полная цепочка сертификатов. Пожалуйста, смотрите наш статья о диагностике и устранении этой проблемы чтобы получить больше информации.

Аннулированный сертификат

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

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

Мы надеемся, что это руководство было полезно для того, чтобы помочь вам расшифровать (иногда загадочные) сообщения об ошибках, выдаваемые веб-браузерами, когда они сталкиваются с проблемным SSL /TLS монтаж. Если у вас есть какие-либо вопросы, пожалуйста, свяжитесь с нами по электронной почте на Support@SSL.com, вызов 1-877-SSL-SECURE, или просто нажмите ссылку чата в правом нижнем углу этой страницы. Вы также можете найти ответы на многие распространенные вопросы поддержки в нашем база знаний. Спасибо, что выбрали SSL.com!

Windows 10, version 1903, all editions Windows 10, version 1809, all editions Windows Server 2019, all editions Windows 10, version 1803, all editions Windows 10, version 1709, all editions Windows 10, version 1703, all editions Windows 10, version 1607, all editions Windows Server 2016, all editions Windows 10 Windows 8.1 Windows Server 2012 R2 Windows Server 2012 Windows 7 Service Pack 1 Windows Server 2008 R2 Windows Server 2008 Service Pack 2 Windows Embedded 8 Standard Windows Embedded Standard 7 Service Pack 1 Windows Embedded POSReady 7 Еще…Меньше

Проблемы

При попытке соединения может происходить сбой или тайм-аут TLS. Вы также можете получить одну или несколько из указанных ниже ошибок.

  • «Запрос прерван: не удалось создать безопасный канал SSL/TLS»

  • Ошибка 0x8009030f

  • Ошибка, зарегистрированная в журнале системных событий для события SCHANNEL 36887 с кодом предупреждения 20 и описанием, «С удаленной конечной точки получено оповещение о неустранимой ошибке. Определенный в протоколе TLS код оповещения о неустранимой ошибке: 20».​

Причина

В связи с принудительным применением CVE-2019-1318 из соображений безопасности все обновления для поддерживаемых версий Windows, выпущенные 8 октября 2019 г. или позже, применяют Extended Master Secret (EMS) для возобновления, как определено в RFC 7627. При подключении к сторонним устройствам и ОС, которые не соответствуют требованиям, могут возникать проблемы и сбои.

Дальнейшие действия

После полного обновления соединения между двумя устройствами под управлением любой поддерживаемой версии Windows не должны иметь этой ошибки. Для этой ошибки обновление Windows не требуется. Эти изменения необходимы для устранения неполадок безопасности и соответствия требованиям безопасности.

Все сторонние операционные системы, устройства и службы, которые не поддерживают возобновление EMS, могут проявлять проблемы, связанные с подключениями TLS. Обратитесь к администратору, изготовителю или поставщику услуг за обновлениями, которые полностью поддерживают возобновление EMS, как определено в RFC 7627.

Примечание. Корпорация Майкрософт не рекомендует отключать EMS. Если служба EMS была явным образом отключена ранее, ее можно снова включить, задав следующие значения в разделе реестра:

HKLMSystemCurrentControlSetControlSecurityProvidersSchannel

На сервере TLS — DisableServerExtendedMasterSecret: 0

На клиенте TLS — DisableClientExtendedMasterSecret: 0

Дополнительные сведения для администраторов

1. На устройстве с Windows, которое пытается установить TLS-подключение к устройству, которое не поддерживает Extended Master Secret (EMS), при согласовании комплектов шифров TLS_DHE_* может иногда возникать сбой, приблизительно в 1 попытке из 256. Чтобы устранить эту ошибку, реализуйте одно из следующих решений, указанных в порядке предпочтения.

  • Включите поддержку расширений Extend Master Secret (EMS) при выполнении TLS-подключений как в клиентской, так и в серверной операционной системе.

  • Для операционных систем, которые не поддерживают EMS, удалите комплекты шифров TLS_DHE_* из списка комплектов шифров в ОС клиентского устройства TLS. Инструкции о том, как это сделать в Windows, см в разделе Определение приоритета для комплектов шифров Schannel.

2. Операционные системы, которые отправляют сообщения запроса сертификата только в режиме полного подтверждения после возобновления, не соответствуют стандарту RFC 2246 (TLS 1.0) или RFC 5246 (TLS 1.2) и приводят к сбою каждого подключения. Возобновление не гарантируется в соответствии со спецификацией RFC, но оно может быть использовано по усмотрению клиента и сервера TLS. При возникновении этой проблемы необходимо обратиться к производителю или поставщику услуг за обновлениями, которые соответствуют стандартам RFC.

3. FTP-серверы или клиенты, не совместимые с RFC 2246 (TLS 1.0) и RFC 5246 (TLS 1.2), могут не передавать файлы при возобновлении или сокращенном подтверждении, и это приведет к сбою каждого подключения. При возникновении этой проблемы необходимо обратиться к производителю или поставщику услуг за обновлениями, которые соответствуют стандартам RFC.

Затронутые обновления

Эта проблема может возникать для любого последнего накопительного обновления (LCU) или ежемесячных накопительных пакетов, выпущенных 8 октября 2019 года или позже, для затронутых платформ:

  • KB4517389 LCU для Windows 10, версия 1903.

  • KB4519338 LCU для Windows 10 версии 1809 и Windows Server 2019.

  • KB4520008 LCU для Windows 10, версия 1803.

  • KB4520004 LCU для Windows 10, версия 1709.

  • KB4520010 LCU для Windows 10, версия 1703.

  • KB4519998 LCU для Windows 10 версии 1607 и Windows Server 2016.

  • KB4520011 LCU для Windows 10, версия 1507.

  • KB4520005 Ежемесячный накопительный пакет для Windows 8.1 и Windows Server 2012 R2.

  • KB4520007 Ежемесячный накопительный пакет обновления для Windows Server 2012.

  • KB4519976 Ежемесячный накопительный пакет для Windows 7 SP1 и Windows Server 2008 R2 SP1.

  • KB4520002 Ежемесячный накопительный пакет обновления для Windows Server 2008 SP2

Эта проблема может возникать для следующих обновлений системы безопасности, выпущенных 8 октября 2019 года, для затронутых платформ:

  • KB4519990 Обновление для системы безопасности для Windows 8.1 и Windows Server 2012 R2.

  • KB4519985 Обновление для системы безопасности для Windows Server 2012 и Windows Embedded 8 Standard.

  • KB4520003 Обновление для системы безопасности для Windows 7 SP1 и Windows Server 2008 R2 SP1

  • KB4520009 Обновление для системы безопасности Windows Server 2008 SP2

Нужна дополнительная помощь?

Информационная безопасность, Разработка систем связи, Сетевые технологии, IT-стандарты


Рекомендация: подборка платных и бесплатных курсов создания сайтов — https://katalog-kursov.ru/

Первоначально разработанный для браузеров, SSL/TLS-протокол позже стал стандартом де-факто вообще для всех защищенных интернет-коммуникаций. Сейчас он используется для удаленного администрирования виртуальной инфра­структуры, развернутой в облаке, для передачи платежных реквизитов покупателя от серверов электронной коммерции к платежным процессорам, таким как PayPal и Amazon, для пересылки локальных данных в облачное хранилище, сохранения переписки в мессенджерах и аутентификации серверов в мобильных приложениях iOS и Android.

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

SSL/TLS-протокол: хотели как лучше…

В теории, защищённое SSL/TLS-протоколом соединение должно обеспечивать конфиденциальность, достоверность и целостность коммуникаций клиентского и серверного софта, – даже в условиях присутствия активного продвинутого злоумышленника из сети: когда сеть полностью захвачена врагом, DNS отравлен, а точки доступа и маршрутизаторы, коммутаторы и WiFi контролируются злоумышленником; злоумышленником, который помимо всего прочего контролирует SSL/TLS-бэкэнд. Кроме того, когда клиентский софт пытается подключиться к законному серверу, – злоумышленник может подменить сетевой адрес сервера (например, через отравление DNS), и вместо законного сервера, перенаправить клиента на свой злонамеренный сервер.

Безопасность коммуникаций в таких суровых условиях, как известно, целиком зависит от адекватности проверки криптографического сертификата, предоставленного сервером при установке соединения. В том числе от адекватности реализации набора шифров (ciphersuite), которыми клиент и сервер пользуются при обмене данными. Для того чтобы SSL/TLS-соединение было полностью безопасным, клиентский софт, в числе прочего, должен тщательно удостовериться, что:

  • сертификат выдан действующим органом сертификации;
  • срок его действия не истёк (или сертификат не был отозван);
  • в списке перечисленных в сертификате имён присутствует тот домен, к которому производится подключение.

…а получилось как всегда: примеры провальной проверки SSL/TLS-сертификата

Однако во многих приложениях и библиотеках, для которых безопасность коммуникаций очень критична, процедура проверки SSL/TLS-сертификата, – и даже EV-SSL, сертификата с расширенной проверкой [4], – полностью провальная. Во всех популярных операционных системах: Linux, Windows, Android и iOS. Среди уязвимого софта, библиотек и middleware-сервисов можно выделить следующие [1]:

  • Amazon’овская Java-библиотека EC2 и все облачные фронтэнд-клиенты построенные на её основе.
  • Amazon’овский и PayPal’овский торговый SDK, ответственный за доставку платёжных реквизитов от сайтов (на которых развёрнута инфраструктура онлайн-коммерции) к платёжным шлюзам.
  • Интегрированные «корзины», такие как osCommerce, ZenCart, Ubercart и PrestaShop, которые не проверяют сертификаты вообще.
  • AdMob-код используемый мобильным софтом для показа контекстной рекламы.
  • Интерфейсные фронтэнд-компоненты ElephantDrive и FilesAnywhere, ответственные за взаимодействие с облачным хранилищем.
  • Android’ная библиотека Pusher и весь софт, который использует Pusher API для управления обменом мгновенными сообщениями (например, GitHub’овский Gaug.es).
  • Apache HttpClient (версия 3.x); Apache Libcloud; и все клиентские подключения к серверам Apache ActiveMQ и т.п.
  • SOAP middleware-сервисы Java, в том числе Apache Axis, Axis 2, Codehaus XFire; а также весь софт, который на базе этих middleware-сервисов построен.
  • API-инструменты Elastic Load Balancing.
  • Weberknecht-реализация WebSockets’ов.
  • А также весь мобильный софт, построенный на базе перечисленных выше библиотек и middleware-сервисов (чтобы понять, что такое middleware-сервисы, смотри рис. 1); в том числе iOS-клиент хостинг-провайдера Rackspace.

Рисунок 1. Что такое middleware-сервисы

Кроме того, в [2] перечислено ещё больше сотни уязвимых мобильных приложений (см. рис. 2). В том числе: Android’s Google Cloud Messaging, Angie’s List Business Center Passwords, AT&T Global Network Client, CapitalOne Spark Pay, Cisco OnPlus (remote access), Cisco Technical Support, Cisco Webex, Cisco WebEx Passwords, Dominos Pizza, E-Trade, Freelancer, Google Earth, Huntington Mobile (Bank), Intuit Tax Online Accountant, iTunes Connect, Microsoft Skype, Oracle Now, Pinterest, SafeNet (VPN client), SouthWest Airlines, Uber, US Bank – Access Online, WesternUnion, WordPress, Yahoo! Finance, Yahoo! Mail.

Рисунок 2. Небольшая выборка из списка уязвимых мобильных приложений

Логические уязвимости SSL/TLS-протокола

SSL/TLS-соединения всего этого и многого другого софта уязвимы для широкого спектра MiTM-атак. При этом, MiTM-атаку можно провести, зачастую, даже без подделки сертификатов и без похищения приватных ключей, которыми серверы подписывают свои сертификаты. MiTM-атаку можно провести – просто эксплуатируя логические уязвимости, которые присутствуют в процедуре проверки SSL/TLS-сертификата на стороне клиентского софта. В результате MiTM-злоумышленник может, например, собирать токены авторизации, номера кредитных карт, имена, адреса и т.п. – у любого продавца, который использует уязвимые веб-приложения обработки платежей.

Поставщики мобильного софта, которые берут за основу сэмпл-код AdMob для связи своих приложений с AdMob-аккаунтом, тоже уязвимы, – они позволяют атакующему захватывать учётные данные, и получать доступ ко всем его Google-сервисам. К примеру, из-за некорректной проверки сертификатов в таких мессенджерах как Trillian и AIM, MiTM-злоумышленник может похитить учётные данные для входа ко всем сервисам Google (включая Gmail), Yahoo!; и также к сервисам Windows Live (в т.ч. SkyDrive). Среди других уязвимостей, которыми страдает современный небраузерный веб-софт: использование неправильных регулярных выражений при сравнении имени хоста; игнорирование результатов проверки корректности сертификата; случайное или преднамеренное отключение проверки. [1]

Другие распространённые уязвимости реализации SSL/TLS-протокола

Ну и конечно же нельзя забывать о том, что даже если в реализации SSL/TLS-протокола нет логических ошибок (если конечно кто-то в это ещё верит), то защиту можно обойти посредством похищения приватного ключа [12], посредством применения 0day-эксплойтов к таким вещам как клавиатуры, браузеры, операционные системы, утилиты и прошивки [3]; посредством компрометации BGP-маршрутизации [10]; или атаковать SSL/TLS по аппаратным (см. рис. 3) [8] и/или программным [9] обходным каналам.

Рисунок 3. Атака на SSL по аппаратным обходным каналам

Кроме того, злоумышленники могут выполнять практически невидимые MiTM-атаки, злоупотребляя механизмом кэширования SSL/TLS-сеансов, реализованным в классе SSLSessionCache. Этот механизм проверяет достоверность сертификатов только при первоначальном соединении; и при этом не способен должным образом аннулировать сеанс связи после удаления сертификатов с устройства. Кроме того, после перезагрузки Android-устройства (через опции «Перезапуск» или «Отключить питание») можно продолжать видеть зашифрованный трафик некоторых приложений, которые после перезагрузки не запускались, но до перезагрузки работали. Так например с Google Maps происходит. В [2] описано, как благодаря этим недочётам кэширования, злоумышленник может совершенно прозрачно для пользователя устанавливать и удалять «невидимые сертификаты», и затем устанавливать сетевое соединение с любым приложением.

Рисунок 4. Ретроспектива уязвимого шифрования

Среди других распространённых уязвимостей реализации SSL/TLS-протокола можно отметить уязвимое шифрование (см. рис. 4) [5], повторное использования GCM (Galois/Counter Mode; счётчик с аутентификацией Галуа) [6], хитрость с CNG (CryptoAPI-NG) в Schannel (см. рис. 5) [7], некорректную проверку цепочки доверия [2], некорректную проверка имени хоста [11].

Рисунок 5. Хитрость с CNG: вытягиваем секреты из Schannel

Некорректная проверка цепочки доверия представляет собой ситуацию, когда веб-приложение принимает абсолютно любой сертификат, в котором указано корректное имя хоста, не проверяя при этом каким центром сертификации он был подписан. Это позволяет перехватывать и дешифровывать пароли и/или номера кредитных карт. А в некоторых случаях даже делать инъекцию вредоносного кода. В Android-софт данная уязвимость проникает, например когда создаётся кастомизированный X509TrustManger-интерфейс, который игнорирует исключения CertificateException. Или когда разработчик софта вставляет в код WebViews-компонента вызов метода SslErrorHandler.proceed(). [2]

Некорректная проверка имени хоста представляет собой ситуацию, когда веб-приложение принимает сертификат, не удостоверившись в том, что хост, с которого этот сертификат пришёл, присутствует в списке доверенных хостов. В Android-софт данная уязвимость проникает, например когда создаётся HostnameVerifier-интерфейс, который при любых условиях возвращает TRUE. Или когда разработчик софта в вставляет в код WebViews-компонента вызов метода SslErrorHandler.proceed(). [2]

Коренная причина существования уязвимостей в SSL/TLS-протоколе

Коренная причина существования подавляющего большинства перечисленных уязвимостей – ужасный API-дизайн SSL/TLS-библиотек (в том числе JSSE, OpenSSL, и GnuTLS). А также не менее ужасный дизайн библиотек передачи данных (таких как cURL, Apache HttpClient и urllib), каждая из которых представляет собой высокоуровневую обёртку для SSL/TLS-библиотек. Не говоря уже о middleware-сервисах (таких как Apache Axis, Axis 2, или Codehaus XFire), которые ещё более высокоуровневой обёрткой являются, и которые увеличивают «снежный ком» ужасного дизайна ещё больше. Вместо того чтобы вести с прикладным разработчиком (зачастую далёким от системного программирования) диалог на понятном ему языке (в терминах конфиденциальности и аутентификации), абстрагировано от низкоуровневых подробностей реализации SSL/TLS-протокола, эти API вываливают на бедолагу кучу низкоуровневых SSL/TLS-параметров, непонятных ему. Требуют от высокоуровневого софта, чтобы он правильно выставлял низкоуровневые опции; реализовывал функции проверки имени хоста и заботился об интерпретации возвращаемых низкоуровневыми операциями значений.

В результате, прикладные разработчики используют SSL/TLS API неправильно: ошибочно интерпретируют многообразие их параметров, опций, побочных эффектов и возвращаемых значений. Например [1]:

  • Amazon’овская PHP-библиотека Flexible Payments Service пытается включить проверку имени хоста – посредством установки параметра CURLOPT_SSL_VERIFYHOST в значение TRUE (в cURL-библиотеке). Однако корректное значение по умолчанию для этого параметра – 2; если же присвоить ему значение TRUE, то этому параметру незаметно для разработчика присваивается значение 1, и т.о. проверка сертификата отключается.
  • PHP-библиотека PayPal Payments Standard – приобрела ту же самую ошибку; причём в тот момент, когда предыдущая, уязвимая, реализация обновлялась (т.е. одну ошибку убрали, другую добавили).
  • Другой пример – это Lynx, тексто-ориентированный браузер. Он проверяет самоподписанные сертификаты, – но только в том случае, если GnuTLS’ная функция проверки сертификата возвращает отрицательное значение. Однако эта самая функция для некоторых ошибок возвращает 0; в том числе в тех случаях, когда сертификаты подписаны недоверенным органом. Из-за этого цепочка проверки доверия в Lynx – нарушена.

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

Например, в JSSE (Java Secure Socket Extension) расширенный интерфейс SSLSocketFactory API – молча пропускает проверку имени хоста, если поле «algorithm» в SSL-клиенте установлено в NULL или в пустую строку, – а не в HTTPS. Хотя данное обстоятельство упоминается в справочном руководстве JSSE, многие Java-реализации SSL-протоколов используют SSLSocketFactory без выполнения проверки имени хоста…

Ложка мёда в бочку дёгтя

Т.о., по факту получается, что в большинстве современного небраузерного веб-софта проверка SSL/TLS-сертификатов либо отключена совсем, либо реализована неправильно. На рисунке 7 представлена классификация актуальных уязвимостей SSL/TLS-протокола. Некоторые из этих уязвимостей, но не все, были описаны и/или упомянуты выше. Ознакомиться с упомянутыми, но неописанными уязвимостями – можно почитав материалы, перечисленные в библиографии.

Рисунок 6. Классификация актуальных для SSL/TLS уязвимостей

Ну и чтобы добавить ложку мёда в бочку дёгтя, стоит отметить, что в [1] подробно/понятно/популярно/грамотно описано, как SSL реализовываться должен, со ссылкой на RFC. Лучшего описания, которое бы технически точным и одновременно понятным было, мы не встречали. Также в [1] разбираются самые распространённые SSL-библиотеки, с классификацией по уровню абстрагирования (низкоуровневые/высокоуровневые). Всё с диаграммами и лаконичными алгоритмами в псевдокоде. Подробно уязвимости конкретных продуктов описаны, с приведением программного кода некорректного, и указанием ошибок. Так что если вдруг у кого-то в очередной раз возникнет желание создать такую реализацию SSL/TLS-фреймворка, которая станет исключением из поговорки «хотели как лучше, а получилось как всегда», то [1] – идеальное для этого начало.

Библиография

1. Martin Georgiev, Rishita Anubhai, Subodh Iyengar. The Most Dangerous Code in the World: Validating SSL Certificates in Non-Browser Software // Proceedings of the 2012 ACM conference on computer and communications security. 2012. pp. 38-49.
2. Tony Trummer. Mobile SSL Failures // Proceedings of the HITB Security Conference. 2015.
3. Kellen Evan Person. How Ciphersuites Work: TLS in Pieces // 2017.
4. Catalin Cimpanu. Extended Validation (EV) Certificates Abused to Create Insanely Believable Phishing Sites // BleepingComputer. 2017.
5. David Adrian. A Retrospective on the Use of Export Cryptography // Black Hat. 2016.
6. Sean Devlin. Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS // Black Hat. 2016.
7. Jake Kambic. Cunning with CNG: Soliciting Secrets from Schannel // Black Hat. 2016.
8. Valeria Bertacco. Torturing OpenSSL // Black Hat. 2012.
9. Tom van Goethem. HEIST: HTTP Encrypted Information Can Be Stolen Through TCP-Windows // Black Hat. 2016.
10. Artyom Gavrichenkov. Breaking Https With BGP Hijacking // Black Hat. 2016.
11. Chris Stone, Tom Chothia. Spinner: Semi-Automatic Detection of Pinning without Hostname Verification // Proceedings of the Annual Computer Security Applications Conference (ACSAC) 2017.
12. Marco Ortisi. Recover a RSA Private Key from a TLS Session with Perfect Forward Secrecy // Black Hat. 2016.

PS. Первоначально статья была опубликована на «Хакере».

Since recently, my Claws Mail client pops up a message «SSL/TSL certificate changed» every time it tries to connect to my gmail account (at pop.gmail.com), with two options: «Cancel connection» and «Accept and Save». I use accept and save, but after 5 minutes the situation repeats. I know I can set skip_ssl_cert_check=1 in the configuration file clawsrc, but I don’t fully understand security implications for that. What is particularly strange for me, googling on this pop-up message yields absolutely nothing, as if I am the first Claws and gmail user to encounter this problem. I use Claws version 3.16.0, ported in Windows 10, if that helps.

asked Jun 20, 2018 at 12:54

Maximko's user avatar

4

To get rid of this annoying repeated message, click on Configuration -> Preferences for Current Account, then click on SSL/TLS and SCROLL DOWN that panel to reveal some hidden checkboxes. Check the box labelled «Automatically accept valid SSL/TLS certificates» and clear the box labelled «Use non-blocking SSL/TLS.» It took me forever to realize there were additional settings at the bottom of this panel.

answered Feb 5, 2019 at 3:20

Rey Lefebvre's user avatar

2

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

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

Ранее мы писали о базовых правилах безопасности сайта и важности перехода на HTTPS. В этой статье мы расскажем о настройке SSL-/TLS-сертификата и типичных ошибках, которые могут навредить сайту.

Технология SSL/TLS и ее роль в безопасности сайта

SSL (Secure Sockets Layer) и TLS (Transport Layer Security) — стандартизированная технология шифрования, которая защищает передаваемые сайтом и сайту данные. Она напрямую связана с HTTPS (Hypertext Transfer Protocol Secure): если сайт использует HTTPS-подключение, это значит, что данные передаются по протоколу SSL или TLS.

SSL была представлена в 1995 году и обновлена до TLS в 1999-м — технология видоизменялась, реагируя на новые уязвимости. Протоколы постоянно обновляются и большинство их предыдущих версий считаются устаревшими. Важно следить за обновлениями и использовать самую актуальную версию SSL/TLS.

Как SSL/TLS влияет на продвижение

Для Google безопасность всегда среди главных приоритетов: поисковик учитывает наличие HTTPS при ранжировании с 2014 года и постоянно обновляет требования к SSL-/TLS-сертификатам.

Большинство браузеров маркируют незащищенные страницы — проверить безопасность соединения можно по значку замка в адресной строке. Safari показывает этот значок, только если сайт использует адекватное шифрование; Firefox показывает перечеркнутый замок при недостаточном уровне защиты на сайтах, которые используют пользовательские данные; Chrome показывает красный треугольник при проблемах с безопасностью и значок замка при безопасном соединении.

Информация о безопасности подключения в браузере

Информация о безопасности подключения в Chrome

Хоть преимущества технологии SSL/TLS довольно очевидны, многие сайты до сих пор не перешли на HTTPS или же используют недостаточно надежные версии протоколов. Статистика 2019 года говорит о том, что 20% крупнейших сайтов в мире не используют безопасный протокол, а по данным на начало 2020 года, только 18% доменных имен в зоне .ru используют узлы HTTPS.

Многие владельцы сайтов не хотят заморачиваться с покупкой и обновлением SSL-/TLS-сертификата или считают, что он им не нужен, если ресурс не собирает пользовательские данные. Но в современных реалиях ваш сайт будет попросту терять клиентов и позиции в поиске, если вы не перейдете на HTTPS и не будете следить за актуальностью шифрования. Для вашего удобства существует множество инструментов для настройки и мониторинга SSL-/TLS-сертификатов, в том числе бесплатные, как Let’s Encrypt.

Как исправлять типичные ошибки SSL/TLS

Если у вас уже есть SSL-/TLS-сертификат, он требует регулярного обновления и мониторинга. Чтобы избежать ошибок, проверяйте свой сайт на наличие проблем с SSL/TLS. Вы можете быстро обнаружить возможные ошибки с помощью «Аудита сайта» SE Ranking — для этого перейдите в раздел «Отчет об ошибках» и секцию «Безопасность сайта»:

Проверка безопасности сайта в SE Ranking

Давайте рассмотрим 4 частые ошибки SSL-/TLS-сертификатов и объясним, как их исправить.

1. Недействительный сертификат

У сертификата безопасности есть определенный срок действия. Он постоянно уменьшался: до 5 лет в 2011-м, до 3 лет в 2015-м, до 2 лет в 2018-м. Сейчас сертификаты действительны только 398 дней (13 месяцев) — с 2020 года Safari, Chrome и Mozilla прекратили поддержку сертификатов с большим сроком действия.

Информация о дате истечения действия сертификата доступна в браузере:

Информация о сроке действия сертификата SSL/TLS

Что же происходит, если SSL-/TLS-сертификат устаревает? Сайт становится недоступен — пользователи увидят сообщение о небезопасности в браузере. Результат — существенные потери трафика и, соответственно, прибыли.

Предупреждение о незащищенном сайте в браузере

Изображение: Chromeum.ru

Поэтому стоит знать дату истечения действия сертификата и вовремя его обновлять. Помогут вам в этом автоматизированные решения типа Let’s Encrypt, AWS Certificate Manager. Также существуют инструменты, которые несколько раз оповещают вас перед окончанием срока действия сертификата. Иногда и вовсе ничего делать не нужно, ведь многие центры сертификации предлагают автоматическое обновление. 

Если вы все же оказались в ситуации недействительного сертификата, нужно вручную его обновить или приобрести новый. Что именно нужно сделать: 

  • Выбрать тип сертификата. Большинство центров сертификации предлагает несколько вариантов, покрывающих потребности сайтов разного масштаба. Если вы только обновляете существующий сертификат и не хотите поменять его тип, этот шаг у вас уже выполнен (иногда логично переключиться на более мощный тип сертификата — например, приобрести Wildcard-сертификат, если у вашего сайта появились поддомены). Покупая новый сертификат, внимательно проверяйте авторитетность производителя. Вы можете настроить CAA-запись, чтобы ограничить круг удостоверяющих центров, имеющих право выпускать сертификаты для вашего домена. Среди самых популярных центров сертификации — GlobalSign, Digicert, Sectigo, Thawte.
  • Сгенерировать запрос на получение сертификата. После покупки нужно сгенерировать CSR (certificate signing request) у хостинг-провайдера. В результате вы получите файл ключа и сам запрос для загрузки в настройках сертификата.
  • Активировать и валидировать сертификат. Далее нужно подтвердить свои права на домен через email, CNAME-запись или подтверждающий файл. Как и в предыдущем процессе, особенности настройки зависят от выбранного провайдера.
  • Проверить корректность работы сертификата. После установки сертификата проверьте его с помощью онлайн-инструмента. Например:

Проверка сертификата SSL/TLS

Если это ваша первая покупка SSL-/TLS-сертификата, вам также следует добавить HTTPS-версию сайта в сервисы для вебмастеров и перенаправить на нее HTTP-трафик. Узнайте больше о правильном переезде на HTTPS из нашей статьи. 

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

2. Устаревшая версия протокола безопасности

Технологии шифрования совершенствуются, но и хакерские атаки становятся все изощреннее. Постоянно растущие риски — одна из причин сокращения срока действия SSL-/TLS-сертификатов и обновления протокола.

Протокол TLS был представлен как апгрейд SSL (версии 3.0 на тот момент), поэтому любая версия TLS более безопасна чем SSL. Самый актуальный протокол — TLS 1.3, выпущенный в 2018 году, — имеет усовершенствованный криптографический алгоритм и позволяет браузеру быстрее подсоединиться к серверу сайта. С 2020 года все основные браузеры не поддерживают устаревшие версии TLS (1.0 и 1.1), а значит не пускают пользователей на сайты, использующие эти версии.

Важно использовать актуальную версию протокола безопасности и отключать все предыдущие версии. Существует несколько способов проверить, какой протокол у сайта:

  • Во вкладке Security в Chrome DevTools:

Проверка версии протокола SSL/TLS в Chrome DevTools

  • В онлайн-инструментах, проверяющих, какие версии TLS и SSL включены на сайте. Например:

Проверка подключенных версий протокола SSL/TLS

Чтобы включить последнюю версию TLS, прежде всего убедитесь, что ваш сайт поддерживает ее. Запустите серверную проверку — например, в SSL Labs — и просмотрите результаты конфигурации:

Проверка серверной конфигурации для настройки SSL/TLS

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

Скажем, ваш сайт размещен на сервере Nginx. Вам нужно отредактировать файл nginx.conf, указав в нем установленную версию TLS. Также удалите из файла все ранее используемые версии, которые признаны устаревшими. Строка конфигурации будет выглядеть так:

ssl_protocols TLSv1.2 TLSv1.3;

Если же окажется, что ваш сайт не поддерживает TLS 1.2 или 1.3, стоит обратиться к провайдеру и по возможности сменить тариф (или провайдера). 

3. Несоответствие имени сертификата

Ошибка неверного имени сертификата вызвана тем, что доменное имя, указанное в SSL-/TLS-сертификате, не соответствует введенному в адресной строке. Пользователи в таком случае не смогут зайти на сайт.

Причины несоответствия имени SSL-/TLS-сертификата:

  • На сайт заходят через внутреннее доменное имя, не указанное в сертификате. Например, вы вводите в адресную строку vashsajt.localhost, тогда как ваш сертификат содержит только vashsajt.com. Вы можете решить эту проблему с помощью сертификата с альтернативным именем субъекта SAN — такой тип позволяет включать целый ряд имен хостов. Проверяйте наличие сертификатов SAN у разных удостоверяющих центров.
  • Сайт доступен и с префиксом www, и без, тогда как в сертификате указана только одна версия. Вам нужно решить, хотите ли вы использовать www в доменном имени, перенаправить весь трафик сайта на соответствующую версию и указать ее в SSL-/TLS-сертификате. Мы детальнее разбираем этот вопрос в статье о префиксе www и его влиянии на SEO.
  • Сайт делит IP-адрес с другими и не имеет отдельного протокола. Для большинства сайтов необязателен отдельный IP-адрес, а использование совместного экономит бюджет. Если у вашего сайта общий IP, укажите доменное имя в расширении протокола SNI. С помощью SNI сервер будет выбирать уникальный для вашего имени хоста TLS-сертификат и соответствующий ключ. Без такого расширения сервер будет использовать шаблонный сертификат, общий для нескольких сайтов, и он может быть слабее установленного вами протокола.
  • Хостинг-провайдер сайта использует шаблонные настройки, которые предопределяют SSL/TLS для доменного имени. Чтобы решить эту проблему, нужно связаться с провайдером и узнать, как заменить их сертификат на ваш, или же поменять провайдера.

В онлайн-инструментах можно проверить, какие доменные имена включены в ваш SSL-/TLS-сертификат:

Проверка доменных имен в сертификате SSL/TLS

4. Устаревший алгоритм шифрования

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

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

  • Алгоритм для обмена ключами между сервером и браузером (ECDHE)
  • Цифровая подпись, удостоверяющая сертификат (ECDSA)
  • Шифр для обмена данными (AES-256-GCM)
  • Алгоритм для аутентификации сообщений (SHA384)

Комбинация в TLS 1.3 содержит только два последних шифра и по умолчанию не поддерживает устаревшие алгоритмы для обмена ключами и аутентификации сертификата.

Версия TLS 1.2 до сих пор считается достаточно надежной, но у нее есть уязвимости из-за большей вариативности алгоритмов шифрования и их качества. С TLS 1.3 выбор шифров ограничен самыми безопасными и весь процесс «рукопожатия» происходит проще и быстрее.

Если вы не знаете, какие шифры поддерживаются вашим сертификатом, стоит проверить их актуальность. Можно запустить онлайн-тест:

Проверка алгоритмов шифрования в сертификате SSL/TLS

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

Обеспечьте сайту бескомпромиссную защиту

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

Анастасия — контент-маркетолог и редактор в SE Ranking, пишет про SEO, маркетинг и цифровые технологии. Кроме текстов для блога SE Ranking, Анастасия пишет музыку, а также любит старые фильмы и свою собаку.

Понравилась статья? Поделить с друзьями:
  • Tlauncher ошибка при скачивании версии
  • Tlauncher произошла ошибка как исправить
  • Tlauncher ошибка при запуске сборки
  • Tlauncher ошибка при установке версии
  • Tis bmw коды ошибок