Как заставить браузер доверять самоподписанному сертификату
РЕДАКТИРОВАТЬ: Internet Explorer 7 не будет отображать никаких ошибок, если я помещу сертификат в доверенные корневые центры сертификации. Internet Explorer 8, похоже, показывает ошибки даже при наличии сертификата.
У вас есть скриншот для ошибки IE 8? Что это показывает на странице пути сертификата? Убедитесь, что вы добавили CA, а не сертификат сайта.
Эти дебаты о том, где этот вопрос принадлежит, абсурдны. Серьезно, невнятно Хотя он может подходить для любого из предложенных сайтов, он абсолютно обоснован как вопрос разработчика, поскольку с этим часто сталкиваются веб- разработчики .
Как заставить IE8 доверять самозаверяющему сертификату за 20 раздражающих шагов
В IE 8 (я на Windows 7), после шага 5, снимите флажок «Включить защищенный режим». Затем вы можете установить сертификат. Но даже после установки сертификата я продолжаю получать предупреждение и красную строку адреса.
Если, как и я, вы используете старую виртуальную машину для тестирования IE8 на Windows XP, не забудьте убедиться, что ваши системные часы точны. Это играет роль в проверке сертификата.
Я получил это работает так
- Запустите Internet Explorer, работающий как пользователь с правами администратора.
- Найдите сервер, используя имя компьютера (игнорируйте предупреждения сертификатов)
- Нажмите на текст «Ошибка сертификата» в верхней части экрана и выберите «Просмотр сертификатов».
- В диалоговом окне «Сертификат» нажмите «Установить сертификат» -> «Далее».
- Выберите Поместить все сертификаты в следующем магазине -> Обзор
- Установите флажок Показать физические магазины
- Выберите доверенные корневые центры сертификации - локальный компьютер
- Нажмите ОК - Далее - Готово - ОК
- Перезапустите Internet Explorer
Эти шаги работали для меня, но я должен был установить флажок * Физический магазин и выбрал * доверенные люди * локальный компьютер. Я пробовал все остальные комбинации, и ничего не получалось, кроме этого. IE11
Это лучший ответ, поскольку в верхнем ответе нет ключевого слова «Запустите Internet Explorer, работающий как пользователь с правами администратора».
У меня не было опции «Доверенные люди, локальный компьютер», поэтому я просто щелкнул «Доверенные люди», и это сработало.
Я также просто выбрал «Надежные люди», и это сработало. Обратите внимание, что я тестировал на ПК с Windows 8. Хранение сертификатов в другом месте, похоже, не сработало, я добился успеха только с «Надежными людьми».
Это сработало для меня, когда я выбрал «Доверенные люди» -> «Локальный компьютер». Чтобы получить опцию «Локальный компьютер», пожалуйста, запустите IE в режиме «Запуск от имени администратора». Я использую Win7 и IE11
Я перепробовал множество шагов от разных людей, размещенных на разных сайтах. Но никто из них не упоминает, что я должен добавить сертификат в хранилище ключей доверенных людей.
Да, для моего случая недостаточно поместить его в доверенный центр сертификации. Я должен также поместить сертификаты в доверенные лица.
- Запустить MMC
- Добавить оснастку сертификата выберите Локальный компьютер
- Развернуть Сертификаты (локальный компьютер) -> Доверенные люди -> Сертификаты
- Щелкните правой кнопкой мыши Все задачи -> Импорт
- Завершить работу мастера
Чтобы экспортировать сертификат:
- Запустите IE от имени администратора (щелкните правой кнопкой мыши, от имени администратора)
- Когда будет предложено недействительное свидетельство, все равно посетите веб-сайт
- Нажмите на ошибку сертификата рядом с адресом, нажмите просмотреть сертификат
- Перейдите на вкладку «Подробности», нажмите «Копировать в файл».
- Сохранить как * .cer файл.
Я на IE9, Windows 7
+1 Я использовал это, чтобы выяснить, что в IE 10 на Win8 x64 вы запускаете IE от имени администратора, просматриваете, затем нажимаете на ошибку до и с помощью кнопки Install Cert выбираете Trusted People в качестве места назначения (не certmgr.msc требуется )
Убедитесь, что ваш самоподписанный сертификат соответствует URL вашего сайта. Если этого не произойдет, вы продолжите получать ошибку сертификата даже после явного доверия к сертификату в Internet Explorer 8 (у меня нет Internet Explorer 7, но Firefox будет доверять сертификату независимо от несоответствия URL-адреса).
Если это проблема, красное поле «Ошибка сертификата» в Internet Explorer 8 будет отображать «Несоответствующий адрес» как ошибку после добавления сертификата. Кроме того, «Просмотр сертификатов» имеет метку « Issued to:», которая показывает, с каким URL действует сертификат.
Отличный ответ: «Несоответствующий адрес» - это ошибка, которая у меня есть. Я думал, что у меня возникла проблема с установкой сертификата, но на самом деле кажется, что сертификат установлен нормально, он просто немного поврежден.
Это был ответ для меня после того, как я попробовал все выше и в других местах. Несоответствующий адрес. Спасибо!
Если вы получаете ошибку несоответствия адресов, просто разрешите несоответствия адресов:
- Инструменты и выберите Свойства обозревателя
- выберите вкладку «Дополнительно»
- Прокрутите вниз и снимите флажок Предупреждать о несоответствии адреса сертификата
СПАСИБО ТЕБЕ ЗА ЭТО! Я следовал за 2-3 шагами выше и все еще получил предупреждение. Этот шаг был единственным, что сработало после импорта сертификата примерно полдюжины раз. Спасибо!
IE11 на Win10: после импорта сертификатов, как описано Джей или Ая, я все еще получил ошибку сертификата. Только после снятия предупреждения и перезагрузки самозаверяющие сертификаты были приняты (без красной строки адреса).
Чувак, сегодня я потратил несколько часов на борьбу с этой проблемой. Что бы я ни делал в IE 8, проблема осталась. Сертификат, установленный IE, появляется в Trusted Root Certification Authorities на клиентском ПК, однако IE по-прежнему жалуется, несмотря ни на что.
Вот решение, которое я обнаружил:
На веб-сервере:
- Win + R, MMC, Enter.
- Файл, оснастка «Добавить-Удалить», «Сертификаты», «Добавить», «Управление сертификатами» для: моей учетной записи пользователя, «Готово», «ОК».
- Перейдите к «Сертификаты - текущий пользователь / доверенные корневые центры сертификации / сертификаты».
- Найдите свой сертификат, щелкните правой кнопкой мыши, Все задачи / Экспорт.
- «Нет, не экспортируйте закрытый ключ»
- "Кодированный двоичный код DER X.509 (.CER)"
- Сохраните файл где-нибудь.
- Передайте вновь созданный файл .CER на клиентский ПК.
На клиентской машине:
Вот как я заставил его работать в IE8:
Вы должны установить свой сертификат как доверенный орган на вашем компьютере.
Есть множество способов сделать это, например, вы можете использовать mmc (start / run / mmc), добавить оснастку «Сертификаты», и оттуда вы можете установить свой самоподписанный сертификат.
Обойти это невозможно, поскольку весь смысл сертификатов состоит в том, чтобы предупредить пользователя, если посещаемый им сайт не был сертифицирован доверенным органом.
если вы находитесь в корпоративной среде, и если в вашей компании на всех компьютерах установлен сертификат в качестве доверенного органа (что является обычной настройкой), вы можете использовать этот сертификат для подписи своего вместо самозаверяющего сертификата
Также возможно установить сертификаты из командной строки, поэтому, безусловно, возможно автоматизировать. Как это сделать, во многом зависит от того, какие инструменты используют ваши системные администраторы.
IE7 работал, если я установил сертификат на локальном компьютере. IE8, кажется, выдает предупреждение, даже если я помещаю подписывающий сертификат (этот самозаверяющий) в доверенные корневые центры сертификации. Сейчас я хочу забыть об аспекте групповой политики - я даже не могу заставить его работать на одной машине.
Недостаточно установить сам сертификат, вместо этого вам нужно установить корневой сертификат вашего центра сертификации. Скажем, если вы используете Win Server Certificate Services, то его корневой сертификат, который был создан, когда CS был установлен на этом сервере, должен быть установлен. Он должен быть установлен в «Доверенные корневые центры сертификации», как описано ранее.
Определение самоподписанного сертификата - это то, где корневым CA является сам сертификат. Доверие к сертификату будет доверять по своей сути.
Это может помочь кому-то, кто я нахожусь на IE11 Windows 7 и что я сделал В дополнение к установке сертификата идет Переход к параметрам Интернета ==> вкладка ==> безопасность ==> «убрать проверку» из предупреждения о несоответствии адреса сертификата в дополнение ниже - не забудьте закрыть все экземпляры IE и перезапустить- после окончания:
1-Запустите Internet Explorer.
2-Найдите на сервере, используя имя компьютера (игнорируйте предупреждения сертификата)
3-Щелкните по тексту «Ошибка сертификата» в верхней части экрана и выберите «Просмотр сертификатов».
4-В диалоговом окне «Сертификат» нажмите «Установить сертификат» -> «Далее».
5-Выберите Поместить все сертификаты в следующем магазине -> Обзор
6-Установите в доверенный корневой сертификат.
Надеюсь, это поможет кому-то.
Вы можете использовать GPO для использования сертификата в домене.
Но моя проблема с Internet Explorer 8, что даже с сертификатом в доверенном корневом хранилище сертификации . он все равно не скажет, что это надежный сайт.
С этим и подписью драйвера, которая должна быть сделана сейчас . Я начинаю задумываться, кому принадлежит мой компьютер!
Если эмитент является доверенным корнем, то, возможно, с сертификатом что-то не так. Соответствует ли каноническое имя сертификата имени хоста, которое пользователь использует для доступа к сайту? Находится ли текущее время в пределах диапазона действия сертификата?
К сожалению, ни одно из решений не помогло мне. Я использовал Internet Explorer 8 в Windows 7. Когда я искал решение, я нашел настройки информации для входа в систему на панели управления. Поэтому я добавил новую запись в информацию на основе сертификатов с адресом моего сервера и выбрал свой предпочтительный сертификат.
После очистки кэша SSL в Internet Explorer 8 я просто обновил сайт, и на сервер был отправлен правильный сертификат.
Это не то решение, которое я хотел, но оно работает.
Как уже упоминалось, первая задача - добавить сертификат в доверенный корневой центр.
Существует специальный exe ( selfssl.exe ), который создаст сертификат и позволит вам указать значение Issued to: (URL). Это означает, что Internet Explorer проверит выданный URL-адрес с помощью пользовательского URL-адреса интрасети.
Обязательно перезапустите Internet Explorer, чтобы обновить изменения.
Это отличный совет, я думаю, что для «Ошибка несоответствия адресов» это правильный способ сделать это, я пробовал все остальные безрезультатно. Что действительно привело к решению, так это ваш комментарий (включая эту ссылку ) к @AlisterScott.
Это не похоже, что возможно больше не иметь ошибки сертификата. Я на Windows XP с IE 8. Групповая политика установила самозаверяющий сертификат в качестве доверенного корневого сертификата для доступа к внутреннему сайту. Когда я смотрю на MMC с оснасткой сертификата, я вижу сертификат там ОК.
Когда я смотрю на:
Свойства обозревателя => Содержание => Сертификаты
Такое поведение в IE началось с того момента, как наши администраторы проиграли последнюю партию обновлений Patch-Tuesday, которые были установлены на моей машине 10 декабря 2009 года. До этого он был очень рад принять сертификат как действительный.
Что ты делал раньше? Для самозаверяющих сертификатов я обычно устанавливаю сертификат локально в клиентской системе.
Возможно, вы сможете использовать групповую политику для отправки сертификата в каждую систему.
Вы должны убедиться, что самоподписанный сертификат использует правильный common name для домена, который вы настраиваете. Если вы собираетесь использовать один и тот же сертификат для нескольких доменов, вам нужно либо иметь уникальный сертификат для каждого домена, либо если все ваши ssl-сайты являются поддоменами общего домена, тогда вы можете создать сертификат с подстановочным доменом, например *.domainname.tld .
Если вы common name неправильно настроили самозаверяющий сертификат, Chrome и Firefox могут работать, но IE может не найти сертификат при каждой загрузке сайта. В IE это будет выглядеть так, как будто вы добавили сертификат сайта, но на самом деле при загрузке страницы он никогда не будет найден.
Как установить корневой сертификат CA, а не сертификат веб-сайта: (IE8, Win7)
После того, как вы импортировали ЦС, вам не нужно импортировать обычный сертификат веб-сайта. Этот сертификат будет соответствовать только что импортированному CA, и IE будет работать как обычно. Вам не нужно запускать IE от имени администратора, и вам не нужно сначала добавлять сайт в доверенные сайты. Вам нужно перезапустить IE после импорта.
Я перепробовал все упомянутые решения, но ни одно из них не сработало. При использовании Internet Explorer 11 (11.0.9600.17914) не было возможности принять недействительные сертификаты, поскольку ошибка выглядела точно как 404.
Помогло следующее: - добавить хост к доверенным сайтам (как уже упоминалось здесь несколько раз) - отключить TLS 1.2 и включить SSL 1.0 и SSL 2.0
Последний шаг - это то, что вы должны делать ТОЛЬКО, если знаете, что делаете. Нам нужно использовать довольно странную настройку здесь, на работе, поэтому мы не могли найти другой способ получить доступ к системе. Как правило, понижение уровня безопасности не следует.
Если вы проводите локальное тестирование и добавляете псевдоним в файлы hosts, скажите
и попробуйте использовать любую из вышеперечисленных процедур у вас не получится. Причина в том, что вы импортируете сертификат для localhost. URL сертификата не будет совпадать.
В этой ситуации вам нужно будет создать самозаверяющий сертификат и затем импортировать его, как описано выше.
Если вы используете Xampp, генерация правильного сертификата может быть легко выполнена с помощью c: \ xampp \ apache \ makecert.bat
Вы можете использовать CertMgr для добавления сертификата в качестве доверенного издателя или, если он самозаверяющий, в качестве корневого сертификата.
Хотя есть similar вопросы и даже хорошие ответы, они либо не заботятся о локальном хосте. или спросите об одном конкретном варианте / решении (самоподписанный или CA).
Какие есть варианты? Как они сравниваются? Как мне это сделать?
3 ответа
tl; dr Создать сертификат, выданный собственным ЦС (см. сценарий ниже)
Вот что я нашел. Поправьте меня, где я ошибаюсь.
Есть ЦС (центры сертификации). Они выдают сертификаты (подписывают 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 ) или в категорию "другие записи" в противном случае. Сертификаты ЦС отображаются на вкладке "Авторитеты" в браузерах или на вкладке "Серверы".
Firefox не доверяет сертификатам сервера из корневого хранилища сертификатов ОС, в отличие от Chromium. Оба доверяют сертификатам CA из корневого хранилища сертификатов ОС.
Доверять сертификатам в браузере
В Chromium вы можете добавлять (импортировать) сертификаты на вкладке «Серверы». Но они попадают либо на вкладку «Центры» (сертификаты CA, и после выбора файла вам не открывается диалоговое окно настроек доверия), либо на вкладку «Другие» (если сертификат не CA).
В Firefox вы не можете точно добавить сертификат на вкладку «Серверы». Вы добавляете исключения. И там можно доверять сертификату без расширений (плохой).
Самозаверяющие расширения сертификатов
Моя система поставляется со следующими настройками по умолчанию (будут добавлены расширения) для сертификатов:
Кроме того, Chromium считает сертификат недействительным, если в нем нет subjectAltName = DNS:$domain .
Несамоподписанные расширения сертификатов
Когда браузеры доверяют самозаверяющему сертификату
Чтобы Chromium мог доверять самозаверяющему сертификату, он должен иметь basicConstraints = CA:true и subjectAltName = DNS:$domain . Для Firefox даже этого недостаточно:
Когда браузеры доверяют сертификату, выпущенному собственным ЦС
Firefox не нуждается в расширениях, но Chromium требует subjectAltName .
openssl шпаргалка
openssl genpkey -algorithm RSA -out "$domain".key - сгенерировать закрытый ключ (man)
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 "$ домен" .csr -days 365 -out "$ домен" .crt \ -CA ca.crt -CAkey ca.key -CAcreateserial - подписать CSR (мужчина)
Не работает без -CAcreateserial . Он создает файл ca.srl , в котором хранится серийный номер последнего сгенерированного сертификата. Чтобы добавить subjectAltName , вам понадобится переключатель -extfile :
openssl req -in $domain.csr -text -noout - просмотреть CSR ( man )
openssl x509 -in $domain.crt -text -noout - просмотреть сертификат ( man )
Создать самоподписанный сертификат
(вам понадобится исключение в Firefox, чтобы оно работало)
Сгенерировать сертификат, выданный собственным ЦС
Конфигурация веб-сервера
P.S. Я использую 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 кажется лучшим вариантом. И убедитесь , что не забыли перезапустить браузер.
Что мне нужно сделать, чтобы Chrome принял сертификат и перестал жаловаться на него?
2020-05-22 : это можно сделать с помощью всего 5 openssl команд .
Пожалуйста , не изменяйте настройки безопасности вашего браузера.
С помощью следующего кода вы можете (1) стать вашим собственным ЦС, (2) затем подписать свой сертификат SSL как ЦС. (3) Затем импортируйте сертификат CA (не сертификат SSL, который отправляется на ваш сервер) в Chrome / Chromium. (Да, это работает даже в Linux.)
NB: в некоторых отчетах говорится, что для Windows openssl необходимо запускать с winpty , чтобы избежать сбоя.
- Станьте центром сертификации
- Подпишите свой сертификат, используя свой сертификат CA + ключ
- Импортируйте myCA.pem как "Центр сертификации" ( не в "Ваши сертификаты") в настройках Chrome (Настройки> Управление сертификатами> Центры> Импорт)
- Используйте файлы $NAME.crt и $NAME.key на своем сервере
Дополнительные шаги (по крайней мере, для Mac):
- Импортируйте сертификат CA в «Файл> Импортировать файл», затем также найдите его в списке, щелкните его правой кнопкой мыши, разверните «> Доверять» и выберите «Всегда».
- Добавьте extendedKeyUsage=serverAuth,clientAuth под basicConstraints=CA:FALSE и убедитесь, что вы установили для "CommonName" то же самое, что и $NAME , когда он запрашивает настройку
Вы можете проверить свою работу , чтобы убедиться, что сертификат построен правильно:
ОБНОВЛЕНО 23 апреля 2020 г.
Рекомендовано командой Chromium
Быстрое и сверхлегкое решение
Существует секретная фраза обхода, которую можно ввести на странице ошибки, чтобы Chrome продолжил работу, несмотря на ошибку безопасности: thisisunsafe (в более ранних версиях Chrome введите badidea и даже ранее, опасность ). НЕ ИСПОЛЬЗУЙТЕ ЭТО, ЕСЛИ ВЫ ТОЧНО НЕ ПОНИМАЕТЕ, ЗАЧЕМ ВАМ ЭТО НУЖНО!
(ПРИМЕЧАНИЕ, что window.atob('dGhpc2lzdW5zYWZl') разрешается в thisisunsafe )
Для справки о том, почему команда Chrome изменила обходную фразу (в первый раз):
Если ничего не помогает (Решение №1)
Для быстрых одноразовых действий, если параметр «Все равно продолжить» недоступен или фраза обхода не работает, этот прием работает хорошо:
Разрешите ошибки сертификата от localhost , включив этот флаг (обратите внимание, что Chrome требует перезапуска после изменения значения флага):
Если ничего не помогает (решение №2)
Загрузите и установите ngrok, а затем откройте его через ngrok.io :
Ngrok запустится и предоставит вам имя хоста, к которому вы можете подключиться, и все запросы будут туннелироваться обратно на ваш локальный компьютер.
ОБНОВЛЕНИЕ 11/2017: этот ответ, вероятно, не будет работать для большинства новых версий Chrome.
ОБНОВЛЕНИЕ 02/2016: лучшие инструкции для пользователей Mac можно найти Здесь.
На сайте, который вы хотите добавить, щелкните правой кнопкой мыши значок красного замка в адресной строке:
Перейдите на вкладку с надписью Подключение , затем нажмите Информация о сертификате
Перейдите на вкладку Подробности , затем нажмите кнопку Копировать в файл . . Откроется мастер экспорта сертификатов, нажмите Далее , чтобы перейти к экрану Формат файла экспорта .
Выберите Двоичный файл X.509 (.CER) в кодировке DER , нажмите Далее 92
Если вы используете Linux, вы также можете следить за этими официальными страницами вики:
- щелкните значок замка с X,
- выберите информацию о сертификате
- перейдите на вкладку "Подробности"
- Нажмите на Экспорт . (сохранить как файл)
Теперь следующая команда добавит сертификат (где YOUR_FILE - ваш экспортированный файл):
Чтобы вывести список всех ваших сертификатов, выполните следующую команду:
Если он по-прежнему не работает, возможно, вы столкнулись с этой ошибкой: Проблема 55050: ошибка SSL 8179 в Ubuntu
P.S. Также убедитесь, что у вас есть libnss3-tools , прежде чем вы сможете использовать вышеуказанные команды.
Если у вас его нет, установите его:
В качестве бонуса вы можете использовать следующие удобные скрипты:
Исправление проблем
Запустите Chrome с параметром --auto-ssl-client-auth
На Mac вы можете создать сертификат, которому Chrome и Safari полностью доверяют на системном уровне, выполнив следующие действия:
В приведенном выше примере используются следующие сценарии и вспомогательный файл v3.ext , чтобы избежать ошибок отсутствия альтернативного имени субъекта
Если вы хотите создать новый самозаверяющий сертификат, которому полностью доверяют, используя ваши собственные корневые полномочия, вы можете сделать это с помощью этих сценариев.
Create_root_cert_and_key.sh
Create_certificate_for_domain.sh
V3.ext
Еще один шаг - как сделать самоподписанные сертификаты полностью доверенными в Chrome / Safari
Чтобы обеспечить ПОЛНОЕ доверие самозаверяющим сертификатам в Chrome и Safari, вам необходимо импортировать новый центр сертификации на ваш Mac. Для этого следуйте этим инструкциям или более подробным инструкциям по этому общему процессу на веб-сайте mitmproxy :
Вы можете сделать это одним из двух способов в командной строке, используя эту команду, которая запросит у вас пароль:
Или с помощью приложения Keychain Access :
И в качестве бонуса, если вам нужны клиенты Java, чтобы доверять сертификатам, вы можете сделать это, импортировав свои сертификаты в хранилище ключей Java. Обратите внимание, что это приведет к удалению сертификата из хранилища ключей, если он уже существует, так как его необходимо обновить, если что-то изменится. Конечно, это делается только для импортируемых сертификатов.
Import_certs_in_current_folder_into_java_keystore.sh
Вот самоподписанный сертификат CA , который он принял. Это единственный способ обойти cert_authority_invalid , который я нашел, я часами пытался заставить его принимать самоподписанный сертификат конечной точки, а не сигару. Пользовательский интерфейс принимает самоподписанные полномочия, если он объявлен CA:TRUE . После этого все сертификаты, подписанные этим ключом с правильным DN, будут приняты Chrome без необходимости добавлять их независимо.
openssl req -new -x509 -extensions v3_req -days 8440 -config ca.conf -key rockstor.key -out rockstor.cert
openssl req -new -x509 -extensions v3_req -days 8440 -config config.conf -key rockstor.key -out rockstor.cert
Если это не сработает:
chrome://restart для фактического перезапуска
Попробуйте получить более подробную информацию об ошибке с помощью firefox, он обычно лучше объясняет ошибки . в то время как Chrome скажет, ERR_CERTIFICATE_INVALID, firefox выдаст: MOZILLA_PKIX_ERROR_CA_CERT_USED_AS_END_ENTITY.
Помните, что Chrome теперь требует альтернативного имени субъекта и почти игнорирует CN.
Для других:
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n -i // Для сертификатов сервера
Для Firefox пользовательский интерфейс, добавляющий сертификат исключения, действительно работает, и он будет доверять ему, как только вы это сделаете.
Возможно, у вас есть забавные настройки в /etc/pki/tls/openssl.cnf , которые объединяются с вашей конфигурацией.
возможно, вы не добавляете расширение в конфигурацию или командную строку, например v3_req
Обратите внимание, что мой метод обходит необходимость в CSR, просто подписывая сертификаты с помощью ключа авторизации и добавляя данные для серверов разработки. CSR позволяют использовать больше ключей для реальной безопасности.
Я пробовал все, но хром требует полномочий с базовыми ограничениями CA: true. И сертификаты сервера должны быть подписаны действующим органом . даже если это просто еще один сертификат, подписанный самим CA: true.
После установки ( и доверия ) сертификата не забудьте перезапустить Chrome ( chrome://restart )
Еще один инструмент, на который стоит обратить внимание, - это набор инструментов CloudFlare cfssl :
На 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, то сертификат можно сохранить там. Именно так это реализовано на всех наших проектах.
Очень много вопросов по этой теме. Оно и понятно: информации мало, противоречивых интерпретаций много. Для нас тема защиты соединений с сайтами близка. Мы пишем на Хабре об этом уже лет восемь. Например, в своё время мы первыми поддержали DNSCrypt прямо в браузере, первыми начали предупреждать о неизвестных корневых сертификатах в системе, первыми включили шифрование трафика для незащищенных Wi-Fi-сетей.
Поэтому сегодня мы расскажем сообществу о происходящем чуть более подробно. Тем, кто очень спешит и хочет получить короткие ответы, достаточно прочитать начало поста. Поехали.
Коротко о главном
Подробнее о проблеме
Как вы можете знать, ряд российских сайтов уже столкнулись с отзывом выданных TLS-сертификатов. Напомню, что наличие действующего авторитетного сертификата жизненно важно для любого сайта, который работает с данными пользователей. Без сертификата невозможно удостовериться, что данные передаются именно тому сайту, который указан в адресной строке браузера, а не подделке злоумышленников. Как следствие, любой современный браузер не пускает пользователей на сайт, если его сертификат отозван (это нормальное, ожидаемое поведение).
Проблема в том, что российским сайтам всё сложнее получить такой сертификат. Удостоверяющие центры всё чаще отзывают ранее выданные сертификаты и отказывают в их выдаче. Да, сайты могут начать использовать самоподписанные сертификаты. Но к ним нет и не будет никакого доверия со стороны браузеров из-за отсутствия контроля в их выдаче и применении. А значит, проблема с доступом к сайтам никуда не денется.
К чему это может привести? Вот несколько вариантов:
Описание текущего решения
Есть альтернативная инициатива — создать национальные удостоверяющие центры (НУЦ) и поддержать их корневые сертификаты в браузерах. НУЦ смогут выдавать сертификаты тем (и только тем!) сайтам, которые к ним обратятся. Наличие альтернативы позволит не допустить ситуации, при которой пользователи лишатся доступа к онлайн-сервисам.
Первый такой НУЦ уже появился — на базе Госуслуг. Сейчас он работает так:
Наши планы
Текущее решение, конечно же, требует развития. Основной способ завоевания доверия к центру сертификации — это открытость. И здесь мы планируем несколько вещей.
Прежде всего, хотим организовать рассылку уведомлений в Яндекс Вебмастере тем владельцам сайтов, для которых зафиксирован выпуск сертификатов.
Наша более глобальная инициатива — поддержать стандарт Certificate Transparency (CT) и поднять публичный лог, в который НУЦ будет записывать выпущенные сертификаты. Если посещаемого пользователем сайта не будет в этом логе, то браузер выдаст ошибку ERR_CERTIFICATE_TRANSPARENCY_REQUIRED и не даст его открыть.
Мы хотим, чтобы наш Браузер проверял сертификаты не по одному, а по нескольким независимым друг от друга публичным логам, поэтому призываем других участников рынка присоединиться к инициативе и поднять дополнительные логи по стандарту CT.
Большая просьба: если вы знаете, как сделать лучше, — приходите, советуйте. Хотите покритиковать решения — критикуйте и предлагайте улучшения.
P. S. Пока оформлял этот пост, прилетела новость: центр сертификации DigiCert, обслуживающий около 50 тыс. российских сайтов, ограничил им выдачу сертификатов.
Читайте также: