30
апрель
2022
Восстановление работы протокола HTTPS и самоподписанные сертификаты
12:43

Восстановление работы протокола HTTPS и самоподписанные сертификаты

30 апрель 2022 12:43

Всё чаще и чаще при просмотре веб-сайтов Интернет стал замечать ошибки HTTPS протокола. Также коллеги по работе стали приходить и жаловаться на недоступность сайтов. В данной статье я предлагаю как улучшить данную ситуацию, связанную с использованием HTTPS.

Введение

Сообщения об ошибках о недоступности или неправильной работе протокола HTTPS могут быть разнообразными. Главные причины:

Причина №1. Доступна только HTTP версия сайта (порт 80), но в браузере включен режим "Только HTTPS" (порт 443)
На некоторых веб сайтах доступен лишь HTTP протокол (порт 80 - http или классический WWW). В последние лет 10 - крайне не характерный вариант для Интернет, т.к. веб-мастера стараются включить протокол HTTPS (порт 443 - SSL) при первой возможности. Причины: в открытый HTTP трафик сотовые операторы могут добавлять рекламу, проходящий HTTP трафик может быть просмотрен злоумышленниками (включая куки-файлы, используемые для входа без пароля). Однако данный вариант может встречаться в локальных сетях для входа на роутер и интернет-кафе, где для аутентификации нужно зайти на сайт по протоколу HTTP (т.к. у веб ресурса нет SSL-сертификата безопасности).

Для любопытных пользователей: как проверить, что https версия сайта существует?

Очевидный способ - в адресную строку вместо http:// ввести https://

Также можно проверить открытие порта 443 или запрос с помощью CURL. Результат виден на экране:

nmap test.ru -p 443
curl -I -v --connect-timeout 3 https://test.ru

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

Сообщения об отсутствии HTTPS-версии сайта или невозможности открыть её, можно отключить настройкой браузера "Конфиденциальность" - "Не включать режим «Только HTTPS»" При этом при явном вводе HTTP-адреса вида http://192.168.1.1 или http://neverssl.com подключение будет производиться по протоколу HTTP (не безопасен!). Далее, если сайт переадресует на HTTPS, если у него веб-мастером была настроена переадресация с HTTP на HTTPS. Либо откроется защищённый сайт, а если нет - то "замочек" в адресной строке так и останется открытым, что является признаком отсутствия шифрования трафика.

HTTPS-only

Данный способ оправдан для домашних компьютеров, но не годится для офисных ПК, пользователи которых работают с размещёнными в Интернет информационными системами, сайтами банков и базами данных.

Невозможно принудительно включить в браузере открытие веб-сайтов по HTTP вместо HTTPS - понижение безопасности.

Причина №2. Веб-сайт в рамках "импортозамещения" или в результате санкций перешёл на отечественную криптографию (российский SSL-сертификат RSA) - но в браузере не установлен корневой сертификат CA, выданный Министерством связи и массовых коммуникаций РФ

В марте-мае 2022 года российские сайты начали переход на отечественные, российские центры выдачи SSL / TLS сертификатов безопасности (CA). В частности, веб-сайтам выдаются SSL-сертификаты нового образца, которые порождены не от корневых сертификатов США, а от корневого сертификата Российского удостоверяющего центра "Russian Trusted Root CA" - Министерства связи, коммуникаций и цифрового развития - (официальный сайт https://digital.gov.ru/). Использование нового CA видно на примере сайта комитета имущественных отношений Санкт-Петербурга commim.spb.ru - цепочка, снимок с экрана от 25.05.2022:

  1. Корневой CA сертификат "Russian Trusted Root CA"
  2. Промежуточный CA сертификат "Russian Trusted Sub CA" (выданный УЦ №1)
  3. SSL-сертификат веб-сайта *.commim.spb.ru (выданный УЦ №2)

trusted

Такая цепочка доверия вызывала вопросы у "импортного" браузера Google Chrome, по причине неизвестного корневого сертификата "Russian Trusted Root CA" - и сайт через HTTPS протокол не открывался, что сделала невозможной работу с сайтом Комитета имущественных отношений одного из коллег на работе.

Простое решение - установка пользователями браузеров «Яндекс» или «Спутник», в которые "вшит" новый SSL-сертификат Russian Trusted Root CA.

Решение на стороне веб-мастеров - добавить на сайт SSL-сертификаты, выданные иностранными удостоверяющими центрами - специально для пользователей пока ещё не "импортозамещённых" браузеров Google Chrome и Mozilla Firefox. Бесплатные сертификаты Let's Encrypt. Компания "Let's Encrypt" выдает сертификаты доменам .RU и .РФ не обращая внимание на санкции. Так и случилось 28 апреля 2022 года - сайт https://commim.spb.ru стал доступен через сертификаты "Let's Encrypt". Платные SSL сертификаты: GlobalSign AlphaSSL и Thawte SSL123 - для доменов .blog, .info и т.п..

По состоянию на 1 мая 2022, веб сайт использует корневой CA-сертификат ISRG X1 ("Let's Encrypt"):
isrg-root

Корневой сертификат ISRG "понимает и принимает" Chrome. Где ISRG - Internet Security Research Group. Пока сертификат иностранный.
Но SSL-сертификат вне всякого сомнения вскоре сменится на российский!

Способ решения для продвинутых пользователей - установка в браузер Chrome или Firefox SSL-сертификата Министерства связи РФ Чему и посвящена данная статья. 😀

Причина №3. Веб-сайт защищён самоподписанным сертификатом (самостоятельно подписанный или самозаверенный сертификат - в формате CRT (X.509) сгенерирован вебмастером для сайта без участия стороннего удостоверяющего центра). Без установки самоподписанного / самозаверенного сертификата в браузер не обойтись, если хотим пользоваться защитой https:// соединения с таким веб-сайтом.

Причина №4. Все остальные причины связаны с ошибками при использовании сертификата: 4а) Срок действия SSL-сертификата закончился или ещё не наступил. 4б) SSL-сертификат сайта был отозван (CRL). 4в) SSL-сертификат выдан для другого домена. Это проблема лежит на стороне веб-мастера сайта, а не пользователя. Обход со стороны клиента - также отключение режима "Только HTTPS" или добавление домена веб-сайта в исключения - кнопка для исключения сайта из проверки безопасности доступна в первоначальном сообщении об ошибке - нажать кнопку "Дополнительно" - "Принять риск и продолжить" - при этом соединение будет установлено по HTTP, без использования SSL шифрования, адрес сайта попадёт в исключения веб-браузера и и начнёт в дальнейшем открываться, но без шифрования.
yellow


I. Установка корневого SSL-сертификата Министерства связи и цифрового развития ROOTCA_SSL_RSA2022.CER

Решение проблемы Код ошибки: SEC_ERROR_UNKNOWN_ISSUER в Firefox,
Устранение ошибки NET::ERR_CERT_AUTHORITY_INVALID в Chrome

  • переходим на сайт Госуслуг в раздел выдачи SSL-сертификатов для юр.лиц: https://gosuslugi.ru/tls
    gosuslugi1

  • прокручиваем страницу вниз до самого конца и скачиваем файл сертификатов ZIP страницы Госуслуг ( - кнопка в конце страницы, кнопка "Скачать сертификат")
    gosuslugi

Сохраняем ZIP-файл с SSL-сертификатом с "Госуслуг" в папку "Загрузки".

  • создаем на ПК временную папку ~/Загрузки/import

    mkdir ~/Загрузки/import
    cd ~/Загрузки/import

  • извлекаем CRT-файл из архива в папке "Загрузки" в папку ~/Загрузки/import
    extract_zip1
    extract_zip

Далее самое главное - импорт CA-сертификата.

Windows: В Проводнике импортируем корневой сертификат ROOTCA_SSL_RSA2022.CER двойным щелчком мыши.

  • Импортировать - Выбрать куда - в "Доверенные корневые центры сертификации" - ... - Готово.

import01
import02
import03
import04
import05
import06
import07
import08

- Linux:

В Linux FireFox и Chrome используют свою собственную систему безопасности и игнорирует настройки ПК. Предположение о необходимости копирования сертификатов в папку /usr/share/ca-certificates и выполнения команды sudo update-ca-certificates, изложенное в более ранней статье на практике не привело к желаемому результату, в отличие от установки в хранилище сертификатов веб-браузера.

Нужно установить SSL-сертификат корневого удостоверяющего центра сертификации РФ в браузере

Вначале нужно сменить формата файла CA-сертификата Минкомсвязи с CER на PEM.

Чтобы преобразовать SSL-сертификата с сайта Госуслуг из формата CER в сертификата формата PEM, используем в терминале команду:

openssl x509 -outform pem -in rootca_ssl_rsa2022.cer -out rootca_ssl_rsa2022.pem 

Дополнения от 11.01.2023:

  1. Некоторые сайты используют промежуточный сертификат Russian Trusted Sub CA. Тогда, нужно установить оба сертификата - корневой и промежуточный.
  2. Данные сертификаты Russian Trusted Root CA и Russian Trusted Sub CA доступны на веб-сайте gu-st.ru по прямым ссылкам:

Для автоматизации, команды по загрузке сертификатов можно собрать в файл linux shell:
#!/bin/sh
wget https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer
wget https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer
openssl x509 -outform pem -in russian_trusted_root_ca.cer -out russian_trusted_root_ca.pem
openssl x509 -outform pem -in russian_trusted_sub_ca.cer -out russian_trusted_sub_ca.pem

I.1. Добавление сертификата корневого удостоверяющего центра России в браузер Mozilla FireFox

Нужно добавить сертификаты CA

- Настройки
- Приватность и защита
- Импорт сертификатов
- Просмотр сертификатов
- Центры сертификации
- Импорт

Выбрать в папке "Загрузки" - "import" файл "rootca_ssl_rsa2022.pem"
ssl-rca

Поставить галочку "Доверять для сайтов"
import1

OK

На этом настройка FireFox завершена, сайт с российским сертификатом по https:// открывается!


I.2. Добавление сертификата корневого удостоверяющего центра России в браузер Google Chrome

В Chrome (Chromium):
- Настройки
- Конфиденциальность и безопасность
- Безопасность
- Настроить сертификаты
- Центры сертификации
- Импорт

Выбрать файл CA-сертификата Минкомсвязи и подтвердить импорт:
ssl-rca

На этом настройка Chrome завершена, сайт по https:// открывается!


II. Установка самоподписанных SSL-сертификатов

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

Mozilla Firefox реагирует на самоподписанные SSL-сертификаты ошибкой MOZILLA_PKIX_ERROR_SELF_SIGNED_CER, которая означает что сертификат слишком слабый и к нему нет доверия. Эта ошибка на первый взгляд в браузере FireFox обходится в один щелчок мыши, нажатием на кнопку "Принять риск и продолжить". Однако добавление сайта в исключения не решает проблему - соединение к сайту не защищено, работает без шифрования запросов / ответов сервера. Что может способствовать утечке конфиденциальных данных. Значит, нужно включить шифрование HTTPS по самоподписанному сертификату (решение проблемы см. далее).

II.1 Добавление самоподписанного сертификата в Mozilla Firefox (пошаговая инструкция)

shag1
shag0
shag10
shag11
shag12
shag15
shag16
shag17
shag18
shag19

II.2 Добавление самоподписанного сертификата в Chrome (пошаговая инструкция)

https1
https2
https3
https4
https5
https6
https7
https8
https9
https10
https11
https12

Новая проблема: блокирование сертификатов по причине срабатывания защиты HSTS (только Google Chrome)

Проблема - HSTS - внедрение в браузере Chrome надстройки над HTTPS - подсистемы HSTS/PKP), которая приводит к невозможности открытия сайтов по HTTP протоколу. Веб-сайт с поддержкой HSTS требует от браузера подключения к нему только по протоколу HTTPS с ранее известным сертификатом. Такое соединение отказывается работать при внезапной смене сертификата веб-сайта (при попытке от MitM). Поскольку HSTS рассчитана на защиту от атак на HTTPS-протоколу, отключить проверку извне невозможно. Помогает лишь очистка локальной базы данных HSTS в браузере Chrome (см. ниже). В FireFox в случае срабатывания защиты HSTS необходимо дать команду "забыть" веб-сайт.

Описание проблемы

Пользователь под Windows 7 и Google Chrome пожаловался, что не смог подключиться к веб сайту commim.spb.ru. После попытки входа в FireFox выводится сообщение
"Предупреждение: Вероятная угроза безопасности
Firefox обнаружил вероятную угрозу безопасности и не стал открывать commim.spb.ru. Если вы посетите этот сайт, злоумышленники могут попытаться похитить вашу информацию, такую как пароли, адреса электронной почты или данные банковских карт.
Как вы можете это исправить?
Скорее всего, эта проблема связана с самим веб-сайтом, и вы ничего не сможете с этим сделать."

Браузер Google Chrome не мог открыть данный сайт https://commim.spb.ru/, с примерной таким же сообщением об ошибке

Ссылки "Перейти на сайт (Небезопасно)" у пользователя на экране не было видно из-за срабатывания системы HSTS - подключение с помощью HTTP протокола ему запрещено. Видимо, раньше сайт был с другим сертификатом, и браузер воспринял кардинальную замену сертификата как "атаку понижением" - вариант атаки MitM с временным использованием HTTP с последующим включением облегчённого HTTPS шифрования "человека посередине". Поэтому веб браузер требовал HTTPS с "сильным" сертификатом и не давал пользователю возможности перейти на небезопасный сайт с использованием протокола HTTP или с иным SSL-сертификатом.

Решение проблемы с HSTS: очисткой информации в веб-сайте из HSTS-хранилища браузера Chrome

1) В адресную строку ввести:

chrome://net-internals

и нажать Enter

2) В левой части окна нажать на пункт меню

"Domain Security Policy"

3) В правой части окна Перейти к разделу "Query", проверить что сайт находится в списке (нажать кнопку Query)
query

4) Если домен находится в списке HSTS, будет выведена информация:
responce

5) Чтобы удалить информацию о домене из БД HSTS (что необходимо для применения новых SSL-сертификатов) - перейти к "Delete domain security policies"

6) Ввести адрес сайта без префикса https://
delete-hsts

7) Нажать кнопку "Delete"

8) Проверить удаление повторным запросом (Query)
notfound

Результат - "Не найдено", значит настройки сайта HSTS удалены из Chrome.



Похожие публикации