- Как заставить браузер доверять локальному SSL-сертификату?
- 1 ответ
- Доверительные сертификаты в масштабе всей системы
- Доверие сертификатам в браузере
- Самозаверяющие сертификаты
- Несамостоятельно подписанные расширения сертификатов
- Когда браузеры доверяют самоподписанному сертификату
- Когда браузеры доверяют сертификату, выпущенному собственным CA
- openssl шпаргалка
- Создать самозаверяющий сертификат
- Создать сертификат, выданный собственным центром сертификации.
- Конфигурация веб-сервера
- Windows
- Как добавить сертификат Центра Сертификации (CA) в доверенные в Windows
- Как добавить корневой сертификат в доверенные в Windows на уровне системы
- Как добавить корневой сертификат в доверенные в Windows в веб браузеры
- Обходим проверку сертификата SSL
Как заставить браузер доверять локальному SSL-сертификату?
Хотя есть похожие вопросы и даже хорошие ответы, они либо не занимаются конкретно localhost, либо задают вопрос об одном конкретном варианте / решении (самоподписанный против CA).
Какие есть варианты? Как они сравниваются? Как мне это сделать?
1 ответ
tl;dr Создать сертификат, выданный собственным центром сертификации (см. скрипт ниже)
Вот что я нашел. Поправь меня, где я не прав.
Есть CA (центры сертификации). Они выдают сертификаты (подписывают CSR) для других CA (промежуточных CA) или серверов (сертификаты конечных объектов). Некоторые из них являются корневыми авторитетами. У них есть самоподписанные сертификаты, выданные самим. То есть обычно существует цепочка доверия, которая идет от сертификата сервера к корневому сертификату. И никто не может поручиться за корневой сертификат. Таким образом, ОС имеют хранилище корневых сертификатов (или хранилище политики доверия), общесистемный список доверенных корневых сертификатов. Браузеры имеют свои собственные списки доверенных сертификатов, которые состоят из общесистемного списка и сертификатов, которым доверяет пользователь.
В Chromium вы управляете сертификатами в chrome://settings/ Certificates. В Firefox Preferences > Privacy & Security > Certificates > View Certificates , Оба имеют вкладку Authorities, которая представляет собой список доверенных корневых сертификатов. И вкладка Серверы, список сертификатов доверенных серверов.
Чтобы получить сертификат, вы создаете CSR (запрос на подпись сертификата), отправьте его в CA. CA подписывает CSR, превращая его в доверенный сертификат в процессе.
Сертификаты и CSR — это набор полей с информацией плюс открытый ключ. Некоторые поля называются расширениями. CA сертификат является сертификатом с basicConstraints = CA:true ,
Вы можете проверить ошибки сертификата в Chromium в Developer Tools > Security ,
Доверительные сертификаты в масштабе всей системы
Когда вы меняете хранилище корневых сертификатов ОС, вам нужно перезапустить браузер. Вы изменяете это с помощью:
trust ставит сертификаты CA в категорию «авторитет» ( trust list ), или категория «другие записи» в противном случае. Сертификаты CA отображаются на вкладке Authorities в браузерах или на вкладке Servers.
Firefox не доверяет сертификатам сервера из хранилища корневых сертификатов ОС, в отличие от Chromium. Оба доверяют сертификатам CA из хранилища корневых сертификатов ОС.
Доверие сертификатам в браузере
В Chromium и Firefox вы можете добавлять (импортировать) сертификаты на вкладку Authorities. Если вы попытаетесь импортировать сертификат не-CA, вы получите сообщение «Not a Certificate Authority». После выбора файла появляется диалоговое окно, где вы можете указать параметры доверия (когда доверять сертификату). Соответствующая настройка для работы сайта: «Доверяйте этому сертификату для идентификации сайтов».
В Chromium вы можете добавлять (импортировать) сертификаты на вкладке Серверы. Но они заканчиваются либо на вкладке Authorities (сертификаты CA, и вы не видите диалоговое окно параметров доверия после выбора файла), либо на вкладке Others (если сертификат не CA).
В Firefox вы не можете точно добавить сертификат на вкладку Серверы. Вы добавляете исключения. И вы можете доверять сертификату без расширений вообще (плохо) там.
Самозаверяющие сертификаты
Моя система поставляется со следующими настройками по умолчанию (расширения, которые будут добавлены) для сертификатов:
Взято из /etc/ssl/openssl.cnf, раздел v3_ca. Подробнее об этом здесь.
Кроме того, Chromium считает сертификат недействительным, если он не имеет subjectAltName = DNS:$domain ,
Несамостоятельно подписанные расширения сертификатов
Из раздела [ usr_cert ] из /etc/ssl/openssl.cnf :
Когда браузеры доверяют самоподписанному сертификату
Чтобы Chromium доверял самозаверяющему сертификату, он должен иметь basicConstraints = CA:true , а также subjectAltName = DNS:$domain , Для Firefox даже этого недостаточно:
Когда браузеры доверяют сертификату, выпущенному собственным CA
Firefox не нуждается в расширениях, но Chromium требует subjectAltName ,
openssl шпаргалка
openssl genpkey -algorithm RSA -out «$domain».key — сгенерировать закрытый ключ ( человек)
openssl req -x509 -key «$domain».key -out «$domain».crt — создать самозаверяющий сертификат ( мужчина)
Без -subj он будет задавать вопросы, касающиеся отличительного имени (DN), например, общего имени (CN), организации (O), населенного пункта (L). Вы можете ответить на них «заранее»: -subj «/CN=$domain/O=$org» ,
Добавить subjectAltName расширение, вам нужно либо иметь конфиг, где все это указано, либо добавить раздел в конфиг и сказать openssl его имя с -extensions переключатель:
openssl req -new -key «$domain».key -out «$domain».csr — создать CSR, это может занять -subj вариант ( человек)
openssl x509 -req -in «$domain».csr -days 365 -out «$domain».crt \ -CA ca.crt -CAkey ca.key -CAcreateserial — подписать КСО ( мужчина)
Не работает без -CAcreateserial , Это создает ca.srl файл, в котором хранится серийный номер последнего сгенерированного сертификата. Добавить subjectAltName тебе понадобится -extfile переключатель:
openssl req -in $domain.csr -text -noout — посмотреть КСО ( мужчина)
openssl x509 -in $domain.crt -text -noout — посмотреть сертификат ( человек)
Создать самозаверяющий сертификат
(для работы вам понадобится исключение в Firefox)
Создать сертификат, выданный собственным центром сертификации.
Конфигурация веб-сервера
PS Я использую Chromium 65.0.3325.162, Firefox 59.0 и openssl-1.1.0.g ,
Windows
Видимо, Windows не имеет trust полезность. В Windows есть два хранилища: локальный компьютер и хранилище сертификатов текущего пользователя. Нет смысла использовать хранилище сертификатов Local Machine, так как мы заставляем его работать только для нашего текущего пользователя. Затем есть магазины. Два предопределенных из них представляют наибольший интерес: доверенные корневые центры сертификации и промежуточные центры сертификации. Обычно упоминается в командной строке как root и CA.
Вы можете получить доступ к Диспетчеру сертификатов в Chrome, выполнив команду chrome://settings/? Search=Manage%20certificates и нажав Управление сертификатами. Наибольший интерес представляют вкладки «Доверенные корневые центры сертификации» и «Промежуточные центры сертификации».
Один из способов получения сертификатов менеджера — через командную строку:
Результаты следующие (для хранилищ локальных компьютеров и сертификатов текущего пользователя):
Другими вариантами будут двойной щелчок по сертификату в проводнике, импорт сертификатов из диспетчера сертификатов Chrome с использованием оснастки MMC «Сертификаты» (запуск certmgr.msc ) или используя CertMgr.exe ,
Для тех, у кого есть grep Установлено, вот как быстро проверить, где находится сертификат:
Таким образом, установка CA-сертификата в хранилище Current User > Trusted Root Certification Authorities кажется наилучшим вариантом. И не забудьте перезапустить браузер.
Источник
Как добавить сертификат Центра Сертификации (CA) в доверенные в Windows
Как добавить корневой сертификат в доверенные в Windows на уровне системы
1. Мастер импорта сертификатов
Если сертификат имеет расширение .crt, то его достаточно запустить двойным кликом:
В открывшемся окне нажмите кнопку «Установить сертификат»:
Выберите один из вариантов:
- «Текущий пользователь» — сертификат будет иметь эффект только для одного пользователя
- «Локальный компьютер» — сертификат будет иметь эффект для всех пользователей данного компьютера
Выберите «Пометить все сертификаты в следующие хранилища»:
Нажмите кнопку «Обзор» и выберите «Доверенные корневые центры сертификации»:
Нажмите «Далее»:
Нажмите «Готово»:
Сообщение об успешном импорте:
Теперь сертификат будет доступен в Менеджере Сертификатов:
2. Добавление root CA сертификата в Менеджере Сертификатов
Чтобы открыть Менеджер Сертификатов нажмите Win+r, введите в открывшееся поле и нажмите Enter:
Кликните правой кнопкой мыши по пункту «Доверенные корневые центры сертификации», выберите пункт «Все задачи» → «Импорт»:
Нажмите «Далее»:
Укажите папку и имя файла:
Нажмите «Далее»:
Теперь действительно всё готово:
Только что импортированный сертификат в Менеджере Сертификатов:
Как добавить корневой сертификат в доверенные в Windows в веб браузеры
Chrome, Chromium, Opera и сделанные на их основе веб браузеры используют общесистемные корневые CA сертификаты. То есть для добавления новых доверенных CA достаточно добавить их в систему, как это показано выше.
Firefox использует исключительно своё хранилище. Для добавления корневых сертификатов CA в Firefox нужно сделать так:
- В настройках Firefox: Приватность и Защита → Сертификаты → Просмотр сертификатов → Центры сертификации:
Нажмите кнопку «Импортировать»:
Выберите файл с сертификатом.
Укажите, какие полномочия вы даёте этому сертификату:
Для глубокого понимания OpenSSL смотрите также полное руководство: «OpenSSL: принципы работы, создание сертификатов, аудит».
Источник
Обходим проверку сертификата SSL
В этом кратком обзоре я хотел бы поделиться своим опытом, как отключить проверку SSL для тестовых сайтов, иначе говоря, как сделать HTTPS сайты доступными для тестирования на локальных машинах.
В современное время https протокол становится все популярней, у него масса плюсов и достоинств, что хорошо. Правда для разработчиков он может вызывать легкий дискомфорт в процессе тестирования.
Всем известно, что при посещении сайта у которого “временно” что-то случилось c сертификатом вы обнаружите предупреждение, которое показывается, если сертификат безопасности не является доверенным net::ERR_CERT_AUTHORITY_INVALID?
Все современные браузеры показывают сообщение об ошибке HSTS
Самый простой способ обхода данного запрета — это, разумеется, нажатие на вкладку “Дополнительные” и согласиться с Небезопасным режимом.
Но не во всех браузерах как оказывается, есть данная возможность. Так я столкнулся с данной проблемой в Chrome на Mac OS
Разработчики данной операционной системы настолько обеспокоены безопасностью пользователей, что даже убрали доступ в «Небезопасном режиме» к сайту, несмотря на то, что это сайт владельца устройства.
Ну что ж, поскольку, вести разработку в других, более сговорчивых браузерах было не комфортно, вот способы как обойти эту проблему:
— Все хромоподобные браузеры (Chrome, Opera, Edge …) могут открыть небезопасную веб страницу, если на английской раскладке клавиатуры набрать фразу:
прямо на данной веб странице. Это даст возможность работать с сайтом без оповещение об ошибке на момент текущей сессии браузера, пока вы не закроете вкладку Chrome.
— Если же вам предстоит более длительная работа с сайтом, то рекомендую для этих нужд создать отдельного тестового пользователя на рабочем столе и указать ему необходимы флаги.
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe» —ignore-certificate-errors
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome —ignore-certificate-errors —ignore-urlfetcher-cert-requests &> /dev/null
Achtung! Данные манипуляции необходимо выполнять с выключенным Chrome приложением, иначе чуда не произойдет.
Если вы оставите сертификат ненадежным, то некоторые вещи не будут работать. Например, кэширование полностью игнорируется для ненадежных сертификатов.
Браузер напомнит, что вы находитесь в небезопасном режиме. Поэтому крайне не рекомендуется шастать по злачным сайтам Интернета с такими правами доступами.
*Так же есть метод с добавлением сертификатов тестируемого сайта в конфиги браузера Настройки->Безопасность->Настроить сертификаты->Импорт… но мне он показался не продуктивным и очень муторным, поэтому не привожу
Надеюсь моя краткая статья кому-то пригодится при разработке и тестировании сайтов =)
Источник