Почему браузер ругается на самоподписанный сертификат
На веб-сайтах, соединение с которыми должно быть защищено (адрес начинается с "https://"), Firefox должен удостовериться, что сертификат, предоставленный веб-сайтом, является действительным. Если сертификат проверить невозможно, Firefox прекратит подключение к веб-сайту и отобразит вместо этого страницу с ошибкой "Предупреждение: потенциальная угроза безопасности". Щёлкнув по кнопке Подробнее , вы можете увидеть конкретную ошибку, обнаруженную Firefox.
В этой статье объясняется, почему вы можете видеть коды ошибок "SEC_ERROR_UNKNOWN_ISSUER", "MOZILLA_PKIX_ERROR_MITM_DETECTED" или "ERROR_SELF_SIGNED_CERT" на веб-сайтах и как её устранить.
О других кодах ошибок на странице с ошибкой "Предупреждение: потенциальная угроза безопасности", прочитайте статью Что значит "Ваше соединение не защищено"?. О страницах с ошибками Ошибка при установлении защищённого соединения или Соединение не установлено: Вероятная угроза безопасности прочитайте статью Ошибка при установлении защищённого соединения или соединение не установлено.
Оглавление
Во время защищённого соединения веб-сайту необходимо представить сертификат, выпущенный доверенным центром сертификации, для того, чтобы Firefox убедился, что пользователь подключен к необходимому сайту и соединение является зашифрованным. Если вы щёлкните по кнопке Дополнительно на странице с ошибкой "Предупреждение: потенциальная угроза безопасности" и видите код ошибки "SEC_ERROR_UNKNOWN_ISSUER" или "MOZILLA_PKIX_ERROR_MITM_DETECTED", это означает, что представленный сертификат был издан центром сертификации, который не известен Firefox, и поэтому ему нельзя доверять по умолчанию.
Если вы сталкиваетесь с этой проблемой на множестве не связанных друг с другом HTTPS-сайтов, это указывает на то, что что-то в вашей системе или сети перехватывает ваше соединение и внедряет сертификаты способом, которому не доверяет Firefox. В большинстве случаев зашифрованные соединения сканирует антивирусное программное обеспечение или слушает вредоносная программа и подменяет легитимные сертификаты веб-сайтов на свои собственные. В частности, код ошибки "MOZILLA_PKIX_ERROR_MITM_DETECTED" показывает, что Firefox обнаружил перехват соединения.
Антивирусные продукты
Стороннее антивирусное программное обеспечение может вмешиваться в защищённые соединения Firefox. Вы можете попробовать переустановить его, что может привести к тому, что программное обеспечение снова поместит свои сертификаты в доверенное хранилище Firefox.
Мы рекомендуем удалить ваше стороннее программное обеспечение и использовать вместо этого защитное программное обеспечение, предлагаемое Microsoft для Windows:
Если вы не хотите удалять своё стороннее программное обеспечение, вы можете попробовать его переустановить, что может заставить программное обеспечение расположить свои сертификаты в доверенное хранилище Firefox снова.
Ниже описаны некоторые альтернативные решения, которые вы можете попробовать:
Avast/AVG
В антивирусных продуктах Avast или AVG вы можете отключить перехват защищённых соединений:
В более старых версиях продукта вы найдёте соответствующий параметр перейдя через Меню > Настройки > Компоненты и щёлкнув Настроить рядом с Web Shield
Bitdefender
В антивирусных продуктах Bitdefender вы можете отключить перехват защищённых соединений:
- Откройте настройки вашего приложения Bitdefender.
- Перейдите к меню Защита и в разделе Предотвращение Интернет угроз щёлкните по Настройки .
- Отключите параметр Сканирование защищённого соединения .
В более старых версиях продукта вы найдёте соответствующий параметр как Сканирование SSL после перехода через Модули > Веб-Защита
В Bitdefender Antivirus Free этот параметр невозможно изменить. Вместо этого вы можете попробовать восстановить или удалить программу, если у вас возникли проблемы с доступом к защищённым веб-сайтам.
Для корпоративных продуктов Bitdefender, пожалуйста, обратитесь к этой странице Центра поддержки Bitdefender.
Bullguard
В продуктах безопасности Bullguard можно отключить перехват защищённых соединений на конкретных крупных сайтах, таких как Google, Yahoo и Facebook:
В антивирусных продуктах ESET вы можете попробовать отключить и повторно включить фильтрацию SSL/TLS-протокола или полностью отключить перехват защищённых подключений, как описано в статье справки ESET.
Kaspersky
В противном случае, вы можете также отключить перехват защищённых соединений:
- Откройте настройки вашего приложения Kaspersky.
- Нажмите на Настройки снизу слева.
- Щёлкните Дополнительные и затем Сеть .
- В разделе Сканирование зашифрованных соединений отметьте флажок Не сканировать зашифрованные соединения и подтвердите это изменение.
- Перезапустите вашу систему, чтобы изменения вступили в силу.
Настройки Family Safety в учётных записях Windows
В учётных записях Microsoft Windows, защищённых настройками Family Safety, защищённые соединения на таких популярных веб-сайтах, как Google, Facebook и Youtube могут перехватываться, а их сертификаты подменяются сертификатами, изданными Microsoft для фильтрации и записи поисковых запросов.
Ознакомьтесь с этой страницей Microsoft ЧаВо, чтобы узнать, как отключить эти компоненты семьи для учётных записей. В случае, если вы хотите вручную установить отсутствующие сертификаты для проблемных учётных записей, вы можете обратиться к этой справочной статье Microsoft.
Наблюдение/фильтрация в корпоративных сетях
Если вы подозреваете, что это ваш случай, свяжитесь, пожалуйста, с вашим ИТ-отделом, чтобы узнать, как корректно настроить Firefox для того, чтобы он правильно работал в таком окружении, поскольку необходимый сертификат, возможно, должен быть сначала помещён в хранилище доверенных сертификатов Firefox. Дополнительную информацию для ИТ-отделов о том, что необходимо для этого сделать, можно найти на странице Mozilla Wiki CA:AddRootToFirefox.
Вредоносные программы
В том случае, если вы сталкиваетесь с этой проблемой только на конкретном сайте, этот тип ошибки обычно указывает на то, что веб-сервер сконфигурирован неправильно. Тем не менее, если вы видите эту ошибку на подлинных крупных сайтах, таких как Google или Фейсбук, или сайтах, на которых проводятся финансовые операции, вы должны выполнить действия, описанные выше.
Сертификат выпущен центром, принадлежащим Symantec
Основной ошибкой будет MOZILLA_PKIX_ERROR_ADDITIONAL_POLICY_CONSTRAINT_FAILED, но на некоторых серверах вы можете увидеть вместо этого код ошибки SEC_ERROR_UNKNOWN_ISSUER.Когда вы попадаете через такой сайт, вы должны связаться с владельцами сайта для того, чтобы информировать их об этой проблеме.
Mozilla настоятельно рекомендует операторам затронутых сайтов провести незамедлительное действие по замене этих сертификатов. DigiCert предоставляет бесплатную замену сертификатов.
Отсутствует промежуточный сертификат
На сайте с отсутствующим промежуточным сертификатом вы увидите следующее описание ошибки после того, как щёлкните по Дополнительно на странице ошибки:
Сертификат веб-сайта мог не быть выдан доверенным центром сертификации, или не была предоставлена полная цепочка сертификатов до доверенного центра сертификации (отсутствует так называемый "промежуточный сертификат").
Вы можете проверить, что сайт настроен правильно, введя адрес веб-сайта в инструмент стороннего производителя, например на тестовой странице SSL Labs. Если он возвращает результат "Chain issues: Incomplete", значит надлежащий промежуточный сертификат отсутствует. Вам следует связаться с владельцами веб-сайта, на котором вы испытываете проблемы с доступом, чтобы сообщить им об этой проблеме.
Самоподписанный сертификат
На сайте с самоподписанным сертификатом вы увидите код ошибки ERROR_SELF_SIGNED_CERT и последующим описанием ошибки после того, как вы щёлкнете по Дополнительно на странице ошибки:
К самоподписанному сертификату, который был выдан непризнанным центром сертификации, по умолчанию нет доверия. Самоподписанные сертификаты могут обеспечить защиту ваших данных от прослушивания, но они ничего не говорят о том, кто является получателем данных. Это характерно для интранет-сайтов, которые не доступны для широкой публики, и вы можете обойти предупреждение для таких сайтов.
Обход предупреждения
Предупреждение: Вам никогда не следует добавлять исключение сертификата для широко известных веб-сайтов или сайтов, где речь идёт о финансовых транзакциях - в этом случае недействительный сертификат может быть индикатором того, что ваше подключение скомпрометировано третьей стороной.
Если веб-сайт это допускает, вы можете обойти предупреждение для того, чтобы посетить сайт, несмотря на то, что сертификат не является доверенным по умолчанию:
- На странице с предупреждением щёлкните по кнопке Дополнительно .
- Щёлкните Подтвердить риск и продолжить .
Эти прекрасные люди помогли написать эту статью:
Станьте волонтёром
Растите и делитесь опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.
На production нет проблем с сертификатами. Обычно хостинг провайдер предоставляет удобный интерфейс для подключения сертификата. Выпуск сертификата тоже дело не сложное. Но во время работы над проектом каждый разработчик должен позаботиться о сертификате сам.
В этой статье я расскажу, как выпустить самоподписанный SSL сертификат и заставить браузер доверять ему.
Чтобы выпустить сертификат для вашего локального домена, понадобится корневой сертификат. На его основе будут выпускаться все остальные сертификаты. Да, для каждого нового top level домена нужно выпускать свой сертификат. Получить корневой сертификат достаточно просто.
Сначала сформируем закрытый ключ:
Затем сам сертификат:
Нужно будет ввести страну, город, компанию и т.д. В результате получаем два файла: rootCA.key и rootCA.pem
Переходим к главному, выпуск самоподписанного сертификата. Так же как и в случае с корневым, это две команды. Но параметров у команд будет значительно больше. И нам понадобится вспомогательный конфигурационный файл. Поэтому оформим все это в виде bash скрипта create_certificate_for_domain.sh
Первый параметр обязателен, выведем небольшую инструкцию для пользователя.
Создадим новый приватный ключ, если он не существует или будем использовать существующий:
Запросим у пользователя название домена. Добавим возможность задания “общего имени” (оно используется при формировании сертификата):
Чтобы не отвечать на вопросы в интерактивном режиме, сформируем строку с ответами. И зададим время действия сертификата:
В переменной SUBJECT перечислены все те же вопросы, который задавались при создании корневого сертификата (страна, город, компания и т.д). Все значение, кроме CN можно поменять на свое усмотрение.
Сформируем csr файл (Certificate Signing Request) на основе ключа. Подробнее о файле запроса сертификата можно почитать в этой статье.
Формируем файл сертификата. Для этого нам понадобится вспомогательный файл с настройками. В этот файл мы запишем домены, для которых будет валиден сертификат и некоторые другие настройки. Назовем его v3.ext. Обращаю ваше внимание, что это отдельный файл, а не часть bash скрипта.
Да, верно, наш сертификат будет валидным для основного домена, а также для всех поддоменов. Сохраняем указанные выше строки в файл v3.ext
Возвращаемся в наш bash скрипт. На основе вспомогательного файла v3.ext создаем временный файл с указанием нашего домена:
Переименовываем сертификат и удаляем временный файл:
Скрипт готов. Запускаем его:
Получаем два файла: mysite.localhost.crt и device.key
Теперь нужно указать web серверу пути к этим файлам. На примере nginx это будет выглядеть так:
Браузер не доверяет этому сертификату. Как быть?
Нужно отметить выпущенный нами сертификат как Trusted. На Linux (Ubuntu и, наверное, остальных Debian-based дистрибутивах) это можно сделать через сам браузер. В Mac OS X это можно сделать через приложение Keychain Access. Запускаем приложение и перетаскиваем в окно файл mysite.localhost.crt. Затем открываем добавленный файл и выбираем Always Trust:
Обновляем страницу в браузере и:
Успех! Браузер доверяет нашему сертификату.
Сертификатом можно поделиться с другими разработчиками, чтобы они добавили его к себе. А если вы используете Docker, то сертификат можно сохранить там. Именно так это реализовано на всех наших проектах.
Что такое SSL
Текущие тенденции сайтостроения предполагают высокую безопасность соединения пользователя с веб-ресурсом. Это необходимо для защиты персональных данных, секретных номеров банковских карт и информации о проводимых сделках. Организуется безопасность подключением протокола шифрования Secure Sockets Layer (сокращенно SSL).
- Сертификат выпускается доверенным центром Certification Authority (CA).
- После выдачи он подключается к домену средствами провайдера хостинга.
- Срок его действия ограничен 1 годом, после чего требуется продление.
При появлении любых сомнений в исправности защиты регистрироваться на сайте или вводить ранее выданные логин и пароль не рекомендуется. Тем более не стоит осуществлять онлайн-оплату с банковских карт или электронных кошельков, ведь не исключено, что проблема возникла из-за взлома ресурса злоумышленниками.
Причины появления ошибок SSL
Существует всего две причины, почему браузер отображает ошибку сертификата SSL со стороны сервера. Первая заключается в окончании срока активации, вторая – это покупка сертификата у поставщика без достаточных полномочий для выдачи «полноценной защиты». Например, виной может быть выбор самоподписанного сертификата, лишь эмулирующего работу реального протокола.
Остальные проблемы обычно скрываются на локальном компьютере:
- Произошел сброс системного времени.
- Неправильно настроена антивирусная программа.
- Сбоит браузер или установленное расширение.
- Срабатывает вредоносный скрипт.
Чтобы выяснить настоящую причину, пользователю браузера рекомендуется проверить все перечисленные факторы. При том же заражении компьютерными вирусами возможно проявление сразу нескольких симптомов – от изменения текущего времени и блокировки антивирусом до подключения перенаправления страниц в браузере и других неприятностей.
Изредка встречаются ситуации, когда проблема возникла со стороны администратора, если он ошибся при подключении нового сертификата или забыл продлить его действие. Обычно такие неполадки устраняются быстро, потому что после активации сайт проверяется и, в случае неработоспособности сертификата, проводится повторное подключение вплоть до получения положительного результата.
Время и дата
Сертификат SSL имеет четко обозначенный срок действия с датой активации и деактивации. Такой подход отчасти дает дополнительную защиту, потому что в случае технического сбоя в системных часах компьютера сайты перестают открываться. Сброс времени обычно происходит «назад», на дату изготовления материнской платы, на что и реагирует система.
Варианты исправления ситуации:
- Вручную внести корректную дату и время, после чего обновить страницу в браузере.
- Воспользоваться функцией синхронизации через интернет, встроенной в Windows.
- Заменить батарейку на памяти BIOS. При первом запуске ПК нужно внести корректные данные.
Каждый раз после изменения времени рекомендуется ручное обновление страницы или перезапуск браузера. Такой шаг активирует повторное соединение с сервером и позволяет зайти на сайт «с нуля», но уже с правильным временем, соответствующим сроку действия сертификата SSL (после активации и до ее завершения).
Настройки антивируса и брандмауэра
Варианты исправления ситуации:
Функция временного отключения имеется в любой защитной программе, даже интегрированной в операционную систему Windows. Но это не гарантирует полную деактивацию приложения. В этом случае разобраться в ситуации поможет открытие сайта на другом компьютере или запуск безопасного режима (актуально для проводного подключения к интернету).
Браузер и операционная система
Наличие проблемы с браузером проще всего определить открытием сайта на другом устройстве или в другой программе. Иногда решение заключается в банальном обновлении версии приложения до актуальной. То же относится к операционной системе, если используется интегрированный браузер вроде Edge. Пакеты обновлений для того и выпускаются, чтобы устранять неполадки в ПО.
Варианты исправления ситуации:
- Полностью очистить историю браузера вместе с кэшем и другими данными.
- Временно отключить все ранее установленные и активные расширения.
- Переустановить программу после ее полной деинсталляции.
Остается еще один вариант – сбросить настройки браузера до состояния «по умолчанию». Способ аналогичен переустановке, но экономит время. Правда, он неэффективен, если проблема возникла из-за сбоя в одном из служебных файлов программы. Отдельное внимание стоит уделить расширению, выполняющему функции антивирусной защиты, ведь оно часто блокирует даже безопасное соединение.
Заражение компьютерными вирусами
Выдачей ошибки SSL браузер, вероятно, предупреждает о попытке его подмены, переадресации на сайт-клон или иной угрозе. В это случае рекомендуется провести полную проверку компьютера на наличие вирусов. Если присутствуют другие признаки заражения, стоит скачать парочку программ со свежими антивирусными базами (например, CureIt).
Варианты исправления ситуации:
- Временно отключить все программы из автозагрузки.
- Провести очистку диска от временных файлов.
- Перезагрузить компьютер после предыдущих шагов.
Выполняются перечисленные действия программами типа CCleaner. Они дают прямой доступ как к автозагрузке операционной системе, так и к списку расширений установленных браузеров. Также в таких программах обычно есть функция удаления ненужных системных файлов, в которых запросто может быть тело компьютерного вируса.
Если предложенные способы устранения ошибки SSL не помогли, остается ждать, пока проблему устранит администратор, или воспользоваться любым другим тематическим сайтом с аналогичным контентом.
При посещении веб-сайта с установленным сертификатом безопасности (для шифрования данных по протоколам SSL/TLS), который браузер не может проверить, выдаются следующие предупреждения:
Internet Explorer:
Firefox 3:
«(Имя сайта) использует недействительный сертификат безопасности. К сертификату нет доверия, так как сертификат его издателя неизвестен». Или: «(Имя сайта) использует недействительный сертификат безопасности. К сертификату нет доверия, так как он является самоподписанным».
Давайте разберемся, почему браузеры так реагируют на некоторые сертификаты и как от избавиться от этой ошибки.
Почему возникает ошибка SSL?
Браузеры обычно разрабатываются с уже встроенным списком доверенных поставщиков SSL сертификатов. К таким относятся всем известные компании Comodo, Thawte, Geotrust, Symantec, RapidSSL, GlobalSign и некоторые другие.
Тем не менее многие поставщики SSL сертификатов в этих списках отсутствуют, так как далеко не у всех есть договоренности с разработчиками веб-браузеров. При открытии сайта с SSL сертификатом, выданным одним из таких поставщиков, браузер выдает предупреждение, что Центр сертификации (ЦС), выдавший SSL сертификат, не является доверенным. То же происходит, когда на сайте установлен самоподписанный SSL сертификат. Internet Explorer выдает довольно общее предупреждение, тогда как Firefox 3 различает SSL сертификаты, выданные самим сервером (самоподписанные SSL сертификаты), и другие виды недоверенных сертификатов.
Если Вы купили SSL сертификат у нас и после его установки возникает такая ошибка, Вы можете устранить ее, следуя инструкциям ниже. Нет необходимости устанавливать дополнительное ПО на клиентские устройства и приложения, чтобы устранить ошибку с доверенным SSL сертификатом. Первое, что следует сделать, это найти причину ошибки SSL с помощью тестера SSL сертификатов. Перейдя по ссылке, Вы можете ввести Ваш домен и запустить проверку SSL сертификата. Если присутствует ошибка SSL о недоверенном сертификате, сервис об этом сообщит. Он различает два типа ошибок:
Самоподписанные SSL сертификаты
Возможной причиной подобной ошибки SSL может быть установленный на сервере самоподписанный SSL сертификат. Браузеры не принимают самоподписанные сертификаты, потому что они сгенерированы Вашим сервером, а не независимым центром сертификации. Чтобы определить, является ли Ваш SSL сертификат самоподписанным, посмотрите с помощью вышеназванного тестера, указан ли центр сертификации в поле Issuer. В случае самоподписанного SSL, в этой графе указывается название Вашего сервера и далее написано «Self-signed».
Решение: Купить SSL сертификат от доверенного центра сертификации.
Если после установки доверенного SSL сертификата на Вашем сервере нашелся самоподписанный, мы рекомендуем пересмотреть инструкции по установке и убедится, что Вы выполнили все нужные шаги.
Ошибка в установке SSL сертификата
Решение: Чтобы устранить эту ошибку SSL, установите файл промежуточного сертификата на сервер, следуя инструкциям по установке для Вашего сервера. Промежуточные и корневые сертификаты Вы можете скачать в личном кабинете, вместе с Вашим основным SSL сертификатом.
После установки сертификата дополнительно убедитесь, что установка была произведена правильно. Если нужно, перезагрузите сервер.
«Информация, которой Вы обмениваетесь с этим сайтом, не может быть просмотрена или изменена другими. Тем не менее, имеются замечания по сертификату безопасности сайта. Сертификат безопасности выдан компанией, не входящей в состав доверенных. Просмотрите сертификат, чтобы определить, следует ли доверять центру сертификации. Хотите продолжить?»
Internet Explorer 7:
«Сертификат безопасности этого веб-узла не был выпущен доверенным центром сертификации. Наличие ошибок в сертификате безопасности может означать, что вас пытаются обмануть или хотят перехватить информацию, передаваемую на сервер».
Есть свой CA на основе скриптов на баше и openssl. Сгенерил (давно) сертификат для nginx, установил его, проверяю в firefox'e - и получаю ошибку SSL_ERROR_BAD_CERT_DOMAIN. Nginx установлен на ноуте, обращаюсь к нему по адресу kalyaka-laptop.acme.local, в /etc/hosts прописано «127.0.0.1 kalyaka-laptop.acme.local». В сертификате в subject alt name домен acme.local имеется (в firefox'e в свойствах сертификата есть строка «DNS Name: *.acme.local»). Корневой сертификат и промежуточный добавлены в authorities параметрах firefox'a. Не знаю, что еще смотреть. В гугле на SSL_ERROR_BAD_CERT_DOMAIN выдается куча нерелевантной информации, вроде необходимости добавить имя хоста в alt names (это уже сделано). Проверил даты в сертификатах - там все ок, сам сертификат годен до сентября 2018, а даты окончания корневого и промежуточного за 2020 годом.
в CN то что указано?
В cn указано просто nw75vm. Этот же хост ещё есть и в alt names.
Если открывать по этому адресу, ошибок нет?
Ошибок нет. Ошибка появляется, когда открываю адрес, подходящий под wildcard указанный в alt names. Например, host.acme.local, host.localdomain и т.п.
При импорте root CA не забыл указать в trust settings «this certificate can identify websites»?
Да, конечно, пробовал поставить все галки - безрезультатно. Причем на рабочей машине с оффтопиком в IE все ок - проверил на всякий случай, и в хроме тоже, они оба используют системное хранилище сертификатов. Что-то с файрфоксом, а что - не ясно.
Да, с ними все хорошо. Проблема только с wildcard'ами.
покажи весь /etc/hosts
или замени 127.0.0.1 kalyaka-laptop.acme.local на 127.0.0.2 kalyaka-laptop.acme.local и проверь ещё раз.
ну пропиши wildcard в CN, а остальное в SAN.
Или запили отдельные сертификаты для каждого домена
У меня там несколько wildcard'ов, на разные цели по своему. Хотя можно и в CN один забить и использовать его, все равно этот сертификат только для экспериментов. Но костыль, и причину проблемы с лисой не устраняет.
Вот мой /etc/hosts:
Все равно работает. Фокс выдает ту же ошибку:
kalyaka-laptop.acme.local:8443 uses an invalid security certificate. The certificate is only valid for the following names: nw75vm, hxehost, desktop5286, localhost, 127.0.0.1, 10.1.74.6, 192.168.56.1, 127.0.0.1, 10.1.74.6, 192.168.56.1, *.acme.local, *.localdomain Error code: SSL_ERROR_BAD_CERT_DOMAIN .
Что интересно, по совету TheAnonymous сгенерил новый сертификат (но со старым ключом), в нем поменял CN с «nw75vm» на «*.acme.local», и ошибка та же самая.
Попробовал натравить openssl на мой nginx.
Читайте также: