Получение Chrome для принятия самозаверяющего сертификата localhost - PullRequest
1008 голосов
/ 28 сентября 2011

Я создал самозаверяющий сертификат SSL для локального хоста CN.Firefox принимает этот сертификат после первоначальной жалобы на него, как и ожидалось.Однако Chrome и IE отказываются принять его даже после добавления сертификата в хранилище сертификатов системы в разделе «Надежные корни».Несмотря на то, что сертификат указан как правильно установленный, когда я нажимаю «Просмотр информации о сертификате» во всплывающем окне HTTPS в Chrome, он по-прежнему настаивает на том, что сертификат нельзя доверять.

Что я должен сделать, чтобы Chrome принял сертификати перестать жаловаться на это?

Ответы [ 40 ]

34 голосов
/ 26 июня 2013

Для тестовой среды

Вы можете использовать --ignore-certificate-errors в качестве параметра командной строки при запуске Chrome (работает в версии 28.0.1500.52 в Ubuntu).

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

Я настраиваю Intellij для запуска Chrome таким способом при выполненииотладка, поскольку тестовые серверы никогда не имеют действительных сертификатов.

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

18 голосов
/ 12 апреля 2016

Как кто-то заметил, вам нужно перезапустить ВСЕ Chrome, а не только окна браузера.Самый быстрый способ сделать это - открыть вкладку, чтобы ...

chrome://restart

17 голосов
/ 06 июня 2017

WINDOWS ИЮНЬ / 2017 Windows Server 2012

Я последовал за ответом @Brad Parks. В Windows вы должны импортировать rootCA.pem в хранилище доверенных корневых сертификатов.

Я сделал следующие шаги:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -newkey rsa:4096 -sha256 -days 1024 -out rootCA.pem
openssl req -new -newkey rsa:4096 -sha256 -nodes -keyout device.key -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 2000 -sha256 -extfile v3.ext

Где v3.ext:

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
IP.1 = 192.168.0.2
IP.2 = 127.0.0.1

Затем, в моем случае, у меня есть веб-приложение, размещенное самостоятельно, поэтому мне нужно связать сертификат с IP-адресом и портом, сертификат должен находиться в МОЕМ хранилище с информацией о секретном ключе, поэтому я экспортировал его в формат pfx.

openssl pkcs12 -export -out device.pfx -inkey device.key -in device.crt

С консолью mmc (Файл / Добавить или удалить оснастки / Сертификаты / Добавить / Учетная запись Computert / LocalComputer / OK) Я импортировал файл pfx в Личное хранилище.

Позже я использовал эту команду для привязки сертификата (вы также можете использовать инструмент HttpConfig):

netsh http add sslcert ipport=0.0.0.0:12345 certhash=b02de34cfe609bf14efd5c2b9be72a6cb6d6fe54 appid={BAD76723-BF4D-497F-A8FE-F0E28D3052F4}

certhash = сертификат Thumprint

appid = GUID (на ваш выбор)

Сначала я попытался импортировать сертификат «device.crt» в Trusted Root Certificates Authorities по-разному, но я все еще получаю ту же ошибку:

enter image description here

Но я понял, что должен импортировать сертификат корневого центра, а не сертификат для домена. Поэтому я использовал консоль mmc (Файл / Добавить или удалить оснастки / Сертификаты / Добавить / Учетная запись Computert / LocalComputer / OK). Я импортировал файл rootCA.pem в хранилище доверенных корневых сертификатов.

enter image description here

Перезапустите Chrome и т. Д. Это работает.

С локальным хостом:

enter image description here

Или с IP-адресом:

enter image description here

Единственное, чего я не смог добиться - это то, что у него устаревший шифр (красный квадрат на картинке). Помощь в этом вопросе приветствуется.

С makecert невозможно добавить информацию SAN. С New-SelfSignedCertificate (Powershell) вы можете добавить информацию SAN, это также работает.

13 голосов
/ 28 сентября 2011

Вы уверены, что адрес сайта обслуживается так же, как сертификат?У меня были те же проблемы с Chrome и самозаверяющим сертификатом, но в итоге я обнаружил, что он просто невероятно требователен к проверке доменного имени на сертификате (как и должно быть).

Chrome нене имеет своего собственного магазина сертификатов и использует собственный Window.Однако Chrome не позволяет импортировать сертификаты в хранилище, поэтому вы должны добавить их через IE.

Установка сертификатов в Google Chrome

Установка сертификатов в ИнтернетеExplorer

Также взгляните на это для нескольких различных подходов к созданию самозаверяющих сертификатов (я предполагаю, что вы используете IIS, как вы не упомянули).

Как создать самоподписанный сертификат в IIS 7

6 голосов
/ 06 апреля 2016

Я пошел по пути использования того, что предложил bjnord: Google Chrome, Mac OS X и самоподписанные SSL-сертификаты

То, что показано в блоге, сделалоне работает.

Однако один из комментариев к блогу был золотым:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt

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

6 голосов
/ 26 сентября 2013

Если щелкнуть маленький зачеркнутый значок замка рядом с URL-адресом, вы увидите поле, похожее на это:

enter image description here

После нажатия Информация о сертификате *По ссылке 1007 * вы увидите следующее диалоговое окно:

enter image description here

В нем указано, какое хранилище сертификатов является правильным, это Доверенные корневые центры сертификации store.

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

certutil -addstore -user "ROOT" cert.pem
  • ROOT - внутреннее имяупомянутого ранее хранилища сертификатов.
  • cert.pem - это название вашего самоподписанного сертификата.
5 голосов
/ 28 ноября 2018

Графический интерфейс для управления сертификатами SSL в Chromium в Linux НЕ работал должным образом.Тем не менее, их документы дали правильный ответ.Хитрость заключалась в том, чтобы запустить команду ниже, которая импортирует самоподписанный сертификат SSL.Просто обновите имя <certificate-nickname> и certificate-filename.cer, затем перезапустите хром / хром.

Из Документов:

В Linux Chromium используетNSS Shared DB.Если встроенный менеджер не работает для вас, то вы можете настроить сертификаты с помощью инструментов командной строки NSS.

Получить инструменты

  • Debian / Ubuntu: sudo apt-get install libnss3-tools

  • Fedora: su -c "yum install nss-tools"

  • Gentoo: su -c "echo 'dev-libs/nss utils' >> /etc/portage/package.use && emerge dev-libs/nss" (Вам нужно запустить все команды ниже спрефикс nss, например, nsscertutil.) Opensuse: sudo zypper install mozilla-nss-tools

Чтобы доверять самозаверяющему сертификату сервера, мы должны использовать

certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n <certificate-nickname> -i certificate-filename.cer

Список всех сертификатов

certutil -d sql:$HOME/.pki/nssdb -L

TRUSTARGS - это три строки из нуля или более буквенных символов, разделенныезапятымиОни определяют, как сертификат должен быть доверенным для SSL, электронной почты и подписи объектов, и объясняются в документах certutil или в блоге Meena о флагах доверия.

Добавление личного сертификата и личного ключа для SSLАутентификация клиента Используйте команду:

pk12util -d sql:$HOME/.pki/nssdb -i PKCS12_file.p12

, чтобы импортировать личный сертификат и закрытый ключ, хранящийся в файле PKCS # 12.TRUSTARGS личного сертификата будет установлен на «u, u, u».

Удалить сертификат certutil -d sql:$HOME/.pki/nssdb -D -n <certificate nickname>

Выдержка из: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

5 голосов
/ 15 сентября 2017

Это сообщение уже заполнено ответами, но я создал bash-скрипт на основе некоторых других ответов, чтобы упростить генерацию самозаверяющего сертификата TLS , действительного вХром (протестировано в Chrome 65.x).Надеюсь, что это полезно для других.

самоподписанный tls bash скрипт

После установки ( и доверие ) сертификат, не забудьте перезапустить Chrome (chrome://restart)


Еще одним инструментом, заслуживающим внимания, является набор инструментов CloudFlare cfssl:

cfssl

4 голосов
/ 17 июня 2017

Начиная с Chrome 58+, я начал получать ошибку сертификата на macOS из-за отсутствия SAN. Вот как снова получить зеленый замок в адресной строке.

  1. Создайте новый сертификат с помощью следующей команды:

    openssl req \
      -newkey rsa:2048 \
      -x509 \
      -nodes \
      -keyout server.key \
      -new \
      -out server.crt \
      -subj /CN=*.domain.dev \
      -reqexts SAN \
      -extensions SAN \
      -config <(cat /System/Library/OpenSSL/openssl.cnf \
          <(printf '[SAN]\nsubjectAltName=DNS:*.domain.dev')) \
      -sha256 \
      -days 720
    
  2. Импортируйте server.crt в цепочку ключей, затем дважды щелкните сертификат, разверните Доверие и выберите Всегда доверять

Обновите страницу https://domain.dev в Google Chrome, чтобы зеленый замок вернулся.

4 голосов
/ 06 апреля 2018

Я перепробовал все и что заставило его работать: при импорте выберите правильную категорию, а именно Trusted Root Certificate Authorities :

(извините, это немецкий, но просто следуйте за изображением)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...