it-roy-ru.com

Chrome NET :: ERR_CERT_AUTHORITY_INVALID ошибка самозаверяющего сертификата в LocalHost

Я пытаюсь настроить среду разработки на своем локальном ПК. Поскольку производственный веб-сайт поддерживает HTTPS (у кого нет в наши дни?), Я хочу, чтобы это также было на локальном хосте. Я думал, что это будет легко, но нет.

У меня есть установка XAMP и все настройки, чтобы я мог получить доступ к веб-сайту. Однако всякий раз, когда я захожу на любую страницу сайта локально, я получаю предупреждение Chrome:

NET :: ERR_CERT_AUTHORITY_INVALID

Я следовал за следующей веткой, чтобы попытаться решить это:

Получение Chrome для принятия самозаверяющего сертификата localhost

Я также создал сертификат с правильным разделом альтернативного имени субъекта (SAN), основываясь на этом:

https://deliciousbrains.com/https-locally-without-browser-privacy-errors/

После этого я сгенерировал файл CER или P7B и импортировал его в Chrome. Я перезапустил как Apache, так и Chrome.

Я положил сертификат в доверенные корневые центры сертификации. Так или иначе, Chrome решил разместить его в промежуточных корневых центрах сертификации ...

Я использую Chrome 61, у меня было то же самое в 60.

Так или иначе, я не могу установить самозаверяющий сертификат и продолжаю получать это предупреждение, которое в основном делает невозможной разработку на localhost ...

Я понимаю, что это самоподписание не совсем заслуживает доверия, но должен быть способ развиваться в автономном режиме? Это не имеет смысла, что мы теперь должны создавать веб-сайты в Интернете? ...

Есть идеи?

18
E.S.

Вот мои инструкции по использованию инструмента KeyStore Explorer.

2 вещи, которые я ранее упускал при создании сертификата:

  • AKID (Authority Key Identifier) ​​- выберите тот же «CN =», который вы использовали при его создании.
  • Добавление в опцию «Основные ограничения» (не выбирайте «это CA»)

Без этих двух вещей Chrome будет выдавать предупреждения/ошибки, даже если вы установили самозаверяющий сертификат в хранилище доверенных сертификатов PK-MS-CAPI (как «Доверенный корневой центр»).

Вот шаги, которые я использовал.

  1. Инструкция с использованием KSE (KeyStore Explorer)
  2. Создать JKS
  3. Создание самозаверяющего сертификата
  4. Откройте проводник KeyStore
  5. Файл | Новый | JKS | Хорошо
  6. Создайте пароль для вашего файла JKS
  7. Файл | Сохранить как ... | введите ваш пароль 
  8. Введите имя файла | Хорошо
  9. Инструменты | Генерация пары ключей
  10. Выберите алгоритм и размер ключа (т. Е. 2048) | Хорошо
  11. Выберите срок действия (то есть 5 лет) 
  12. Выберите имя (значок книги) | Введите в поля имени | Хорошо
  13. То есть «CN = локальный ...»
  14. Добавить расширения (очень важно), это определяет, какой тип сертификата будет и как его можно использовать. Этот пример будет для стандартного сертификата сервера с SSL.
  15. Добавьте в пункт «Использование ключа»
  16. Добавьте флажок «Цифровая подпись» и «Ключ шифрования»
  17. Добавить в опции EKU (расширенное использование ключа)
  18. Выберите оба эти варианта:
  19. Аутентификация веб-клиента TLS
  20. Аутентификация веб-сервера TLS
  21. Добавьте в SAN (альтернативное имя субъекта)
  22. Добавьте все необходимые DNS-имена и IP-адреса (если применимо), для которых будет использоваться этот сервер. (повторите для всех желаемых значений) (например, 127.0.0.1 и localhost (или)
  23. Когда это будет сделано, это будет выглядеть примерно так
  24. Когда это будет сделано, вы увидите все поля с OID (Object Identifiers) в списке | Хорошо | Хорошо
  25. Добавьте в AKID (Идентификатор ключа авторизации)
  26. Добавить расширения "+"
  27. Добавить тип расширения | Идентификатор ключа авторизации
  28. Выберите эмитента сертификата авторизации CN, который вы создали выше (.e.g "CN = localhost ...") | Хорошо
  29. Добавьте в «Основные ограничения» (НЕ проверяйте «Объект является CA»)
  30. Когда вы закончите, вы увидите их в списке: нажмите «ОК»
  31. Примечание. Основные ограничения и AKID (идентификатор ключа авторизации) необходимы браузеру Chrome для проверки самоподписанного сертификата в качестве доверенного сертификата. 
  32. В противном случае вы увидите предупреждения или сообщения об ошибках даже после явного добавления этого сертификата в сертификаты доверенного корня MS-CAPI.
  33. Введите в Псевдониме имя пары ключей, которую вы хотите использовать
  34. Введите в секретный пароль
  35. * Примечание: этот пароль ДОЛЖЕН быть тем же, что и пароль хранилища ключей файла JKS, иначе при попытке использовать этот сертификат может произойти сбой Java.
  36. Вы должны увидеть сообщение об успехе. | Хорошо 
  37. Затем сохраните файл | Сохранить
5
atom88

Я исправил точно такую ​​же проблему, следуя это

Казалось, проблема в том, как был создан сертификат.

Код ниже взят с сайта выше. 

#!/usr/bin/env bash
mkdir ~/ssl/
openssl genrsa -des3 -out ~/ssl/rootCA.key 2048
openssl req -x509 -new -nodes -key ~/ssl/rootCA.key -sha256 -days 1024 -out ~/ssl/rootCA.pem


#!/usr/bin/env bash
Sudo openssl req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config <( cat server.csr.cnf )

Sudo openssl x509 -req -in server.csr -CA ~/ssl/rootCA.pem -CAkey ~/ssl/rootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile v3.ext

файл server.csr.cnf

[req]
default_bits = 2048
Prompt = no
default_md = sha256
distinguished_name = dn

[dn]
C=US
ST=New York
L=Rochester
O=End Point
OU=Testing Domain
[email protected]omain.com
CN = localhost

v3.ext файл

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

[alt_names]
DNS.1 = localhost
2
Temp O'rary

Существует отличная графическая утилита на основе Java, которую я использую для создания и управления всеми объектами PKI, называемая KeyStore Explorer. Намного проще, чем все параметры командной строки:

http://keystore-Explorer.org/

1
atom88