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

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

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

Ответы [ 40 ]

2 голосов
/ 30 июня 2016

Исправление для Chrome в Windows.

Сначала необходимо экспортировать сертификат.

  • Найдите URL-адрес в браузере.Сегмент «https» URL будет перечеркнут красной линией, а слева будет символ замка.
  • Щелкните правой кнопкой мыши по перечеркнутому сегменту «https».
  • Вы увидите информационное окно с различной информацией
  • Нажмите «Подробнее».
  • Экспорт сертификата, следуйте инструкциям, примите настройки по умолчанию.

Для импорта

  • Перейдите в настройки Chrome
  • Нажмите «Дополнительно»настройки "
  • В разделе HTTPS / SSL нажмите" Управление сертификатами "
  • Перейдите в" Доверенные корневые центры сертификации "
  • Нажмите" Импортировать "
  • Тампоявится всплывающее окно, которое спросит вас, хотите ли вы установить этот сертификат.Нажмите «Да».
2 голосов
/ 30 августа 2016

У меня возникла та же проблема: я установил сертификат в хранилище Trusted Root Authorities Windows, и Chrome все еще отказался от сертификата с ошибкой ERR_CERT_COMMON_NAME_INVALID. Обратите внимание: если сертификат неправильно установлен в хранилище, возникает ошибка ERR_CERT_AUTHORITY_INVALID.

Как подсказывает название ошибки, этот комментарий и этот вопрос , проблема заключалась в объявленном доменном имени в сертификате. Когда мне было предложено ввести «Общее имя» при создании сертификата, мне пришлось ввести доменное имя , которое я использовал для доступа к сайту (localhost в моем случае). Я перезапустил Chrome, используя chrome://restart, и он, наконец, был рад этому новому сертификату.

2 голосов
/ 31 января 2017

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

Вы должны создать PKI с;

1) selfПодпись Root CA.
2) подчиненный / промежуточный сертификат [подписанный корневым центром сертификации].
3) сертификат обычной / конечной сущности [подписанный корневым CA или подчиненным CA] (commonName или subjectAltName (SAN) в качестве локального хоста) (также включает https://localhost/ в качестве URI в SAN).
4) Импортируйте / установите этот Root CA в вашей ОС Windows (потому что вы упомянули IE. Google Chrome использует те же ресурсы при поиске цепочки сертификатов - https://www.chromium.org/Home/chromium-security/root-ca-policy), что и «Trusted Root Certification Authorities».
5) Установите этот сертификат конечного объекта в качестве сертификата веб-сервера, и он перестанет жаловаться на это сообщение об ошибке.

Надеюсь, это поможет.

2 голосов
/ 05 мая 2018

У меня был успех после ответа Келлен с жизненно важным обновлением от Тоби J , но я должен был сделать эту ревизию:

При создании самоподписанногосертификат, необходимо было поместить новое поле subjectAltName под расширениями v3_ca вместо v3_req.Я скопировал /etc/ssl/openssl.conf во временный файл, а затем добавил строку subjectAltName = DNS:*.example.com в [ v3_ca ].Затем передал этот файл команде создания сертификата, что-то вроде

  openssl req -x509 -nodes -newkey rsa:2048 \
          -config /tmp/openssl-revised.cfg \
          -keyout example.com.key -out example.com.crt

, и выполнил kellen обновленные шаги.

2 голосов
/ 15 июня 2018
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt

openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
2 голосов
/ 29 июня 2016

SSL / HTTPS localhost fix на mac / osx:

  1. Нажмите на красный замок с крестиком в адресной строке при попытке открыть ваш https localhostсреда.Там откроется окно с некоторой информацией о сертификате.

  2. Нажмите «Подробности» информационное окно

  3. Инструменты разработчика Chrome откроются на вкладке «Безопасность».Нажмите Просмотреть сертификат . Изображение сертификата
  4. Добавьте его в цепочку ключей «Система» (а не в цепочку ключей «логин», выбранную по умолчанию).

  5. Снова откройте брелок и найдите сертификат.Нажмите на нее и убедитесь, что вы «доверяете» всем.

  6. Перезапустите Chrome, и он должен работать.

1 голос
/ 21 мая 2019

Чтобы создать самоподписанный сертификат в Windows, которому будет доверять Chrome v58 и новее, запустите Powershell с повышенными привилегиями и введите:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -Subject "fruity.local" -DnsName "fruity.local", "*.fruity.local" -FriendlyName "FruityCert" -NotAfter (Get-Date).AddYears(10)
#notes: 
#    -subject "*.fruity.local" = Sets the string subject name to the wildcard *.fruity.local
#    -DnsName "fruity.local", "*.fruity.local"
#         ^ Sets the subject alternative name to fruity.local, *.fruity.local. (Required by Chrome v58 and later)
#    -NotAfter (Get-Date).AddYears(10) = make the certificate last 10 years. Note: only works from Windows Server 2016 / Windows 10 onwards!!

После этого сертификат будет сохранен в сертификаты локального компьютера в хранилище Personal \ Certificates .

Вы хотите скопировать этот сертификат в доверенные корневые центры сертификации \ Сертификаты хранилище.

Один из способов сделать это: нажмите кнопку запуска Windows и введите certlm.msc. Затем перетащите только что созданный сертификат в Trusted Root Certification Authorities \ Certificates хранилище в соответствии с приведенным ниже снимком экрана. enter image description here

0 голосов
/ 16 августа 2017

Вот решение, использующее только Java 8 keytool.exe вместо openssl:

@echo off
set PWD=changeit
set DNSNAME=%COMPUTERNAME%

echo create ca key
keytool -genkeypair -alias ca -keystore test.jks -keyalg RSA -validity 3650 -ext bc:critical=ca:true -dname "CN=CA" -storepass:env PWD -keypass:env PWD
echo generate cert request for ca signing
keytool -certreq -keystore test.jks -storepass:env PWD -alias ca -file ca.csr -ext bc:critical=ca:true
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile ca.csr -outfile ca.cer -validity 3650 -ext bc:critical=ca:true
echo CA created. Import ca.cer in windows and firefox' certificate store as "Trusted CA".
pause

echo create server cert key for %DNSNAME%
keytool -genkeypair -alias leaf -keystore test.jks -keyalg RSA -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1 -dname "CN=Leaf" -storepass:env PWD -keypass:env PWD
echo generate cert request
keytool -certreq -keystore test.jks -storepass:env PWD -alias leaf -file leaf.csr -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile leaf.csr -outfile leaf.cer -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1

rem see content
rem keytool -printcert -file leaf.cer -storepass:env PWD 

echo install in orig keystore
keytool -importcert -keystore test.jks -storepass:env PWD -file leaf.cer -alias leaf

echo content of test.jks:
keytool -list -v -storepass:env PWD -keystore test.jks
pause

Вы также можете использовать каналы вместо файлов, но с файлами вы можете проверить промежуточные результаты, если что-то пойдет не так. SSL протестирован с IE11, Edge, FF54, Chrome60 для Windows и Chrome60 для Android.

Пожалуйста, измените пароль по умолчанию перед использованием скрипта.

0 голосов
/ 02 ноября 2017

Ни один из приведенных выше ответов не помог мне в Windows 10 при локальном тестировании на

https://localhost:<port>.

Однако я нашел эту страницу с указанием пропустить еще один флаг:

https://www.chromium.org/blink/serviceworker/service-worker-faq

Если вы хотите провести тестирование на https://localhost с самозаверяющим сертификатом, выполните:

$ ./chrome --allow-insecure-localhost https://localhost

Это не избавило от красного предупреждения, но оно позволило мне использовать функцию только для https, такую ​​как работники сферы обслуживания и push-уведомления в Интернете.

0 голосов
/ 06 декабря 2017

Предполагая, что вы работаете в Mac OSX, вы также можете просто открыть соответствующий URL в Safari;сказать;https://localhost:8080/css/app.css, разрешить сертификат.Перезапустите Chrome, и он будет работать.

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