Получение Chrome для принятия самоподписанного локального сертификата

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

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

30 Solutions collect form web for “Получение Chrome для принятия самоподписанного локального сертификата”

Это сработало для меня:

  1. Используя Chrome, нажмите страницу на своем сервере через HTTPS и продолжите красную страницу предупреждения (если вы еще этого не сделали).
  2. Откройте Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates .
  3. Перейдите на вкладку « Authorities » и прокрутите страницу вниз, чтобы найти свой сертификат в названии организации, которое вы дали сертификату.
  4. Выберите его, нажмите «Изменить» ( ПРИМЕЧАНИЕ : в последних версиях Chrome кнопка теперь «Дополнительно» вместо «Редактировать»), отметьте все поля и нажмите «ОК». Возможно, вам придется перезапустить Chrome.

Теперь вы должны получить красивый зеленый замок на своих страницах.

EDIT: я попробовал это снова на новой машине, и сертификат не появился в окне «Управление сертификатами», просто перейдя с красной страницы ненадежного сертификата. Я должен был сделать следующее:

  1. На странице с ненадежным сертификатом ( https:// вычеркнуто красным цветом) щелкните блокировку> Информация о сертификате. ПРИМЕЧАНИЕ. В новых версиях хром вам нужно открыть « Developer Tools > Security и выбрать « View certificate .
  2. Перейдите на Details tab > Export . Выберите PKCS #7, single certificate в качестве формата файла.
  3. Затем следуйте моим первоначальным инструкциям, чтобы перейти на страницу «Управление сертификатами». Перейдите на Authorities tab > Import и выберите файл, на который вы экспортировали сертификат, и убедитесь, что в качестве типа файла вы выбрали PKCS #7, single certificate .
  4. Если запрашиваемый магазин сертификатов, выберите доверенные корневые центры сертификации
  5. Проверьте все поля и нажмите «ОК». Перезапустите Chrome.

НЕ ДЛЯ ПРОД

Просто вставьте это в свой хром:

 chrome://flags/#allow-insecure-localhost 

Вы должны увидеть выделенный текст: Разрешить недействительные сертификаты для ресурсов, загруженных из localhost

Нажмите « Enable .

На Mac вы можете использовать утилиту Keychain Access для добавления самозаверяющего сертификата в системную цепочку ключей, а затем Chrome примет ее. Я нашел пошаговые инструкции здесь:

Google Chrome, Mac OS X и самоподписанные SSL-сертификаты

В основном:

  1. дважды щелкните значок блокировки с помощью X и перетащите значок сертификата на рабочий стол,
  2. откройте этот файл (заканчивающийся расширением .cer); это открывает приложение для связки ключей, которое позволяет утверждать сертификат.

ОБНОВЛЕНИЕ ХРОМА 58+ (ВЫПУЩЕН 2017-04-19)

Начиная с Chrome 58, удаление хоста с использованием только commonName удаляется . См. Дальнейшую дискуссию здесь и отладчик ошибок здесь . В прошлом subjectAltName использовался только для сертификатов нескольких хостов, поэтому некоторые внутренние инструменты CA не могут включать их.

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

Поэтому, независимо от того, какой метод вы используете для создания своего самозаверяющего сертификата (или сертификата, подписанного самозаверяющим ЦС), убедитесь, что сертификат сервера содержит имя subjectAltName с надлежащим DNS и / или IP / записью, даже если это просто для один хост .

Для openssl это означает, что ваша конфигурация OpenSSL ( /etc/ssl/openssl.cnf на Ubuntu) должна иметь что-то похожее на следующее для одного хоста:

 [v3_ca] # and/or [v3_req], if you are generating a CSR subjectAltName = DNS:example.com 

или для нескольких хостов:

 [v3_ca] # and/or [v3_req], if you are generating a CSR subjectAltName = DNS:example.com, DNS:host1.example.com, DNS:*.host2.example.com, IP:10.1.2.3 

В средстве просмотра сертификатов Chrome (которое переместилось на вкладку «Безопасность» в разделе F12), вы должны увидеть его в списке « Extensions как Certificate Subject Alternative Name :

Chrome cert viewer


EDIT: временное обходное решение ниже было удалено, как планировалось, в Chrome 66 (выпущен в апреле 2018 года)

ВРЕМЕННОЕ ВОСПИТАНИЕ

Можно вернуться к commonName поведению commonName до Chrome 65 , используя следующий параметр: EnableCommonNameFallbackForLocalAnchors

В Windows это можно установить на одном ПК с помощью следующей команды реестра (спасибо @Meengla):

 reg add HKLM\Software\Policies\Google\Chrome /v EnableCommonNameFallbackForLocalAnchors /t REG_DWORD /d 1 

На Mac можно использовать следующую команду (спасибо @BugsBunny):

 defaults write com.google.Chrome EnableCommonNameFallbackForLocalAnchors -bool true 

В Linux создайте файл политики, такой как /etc/opt/chrome/policies/managed/EnableCommonNameFallbackFor‌​LocalAnchors.json с содержимым: { "EnableCommonNameFallbackForLocalAnchors": true } (thanks @seanf)

Более подробную информацию о настройке этих политик для различных платформ, включая настройку их с помощью Windows GPO, можно найти в верхней части связанной страницы, а также в руководстве по шаблонам политики Chromium и в руководстве «Администраторы» .


Опять же, эти временные решения являются временными до версии 65!

ОБНОВЛЕНИЕ 11/2017: Этот ответ, вероятно, не будет работать для большинства новых версий Chrome.

ОБНОВЛЕНИЕ 02/2016: лучшие инструкции для пользователей Mac могут быть найдены здесь .

  1. На сайте, который вы хотите добавить, щелкните правой кнопкой мыши значок красного замка в адресной строке: введите описание изображения здесь

    1. Перейдите на вкладку « Соединение» и нажмите « Информация о сертификате».

    2. Перейдите на вкладку « Сведения », нажмите кнопку « Копировать в файл …» . Откроется мастер экспорта сертификатов, затем нажмите « Далее», чтобы перейти к экрану « Экспорт файлов» .

    3. Выберите DER закодированный двоичный файл X.509 (.CER) , нажмите « Далее».

    4. Нажмите « Обзор» … и сохраните файл на своем компьютере. Назовите его чем-то описательным. Нажмите « Далее» , затем нажмите « Готово» .

    5. Откройте настройки Chrome, прокрутите страницу вниз и нажмите Показать дополнительные настройки …

    6. В разделе HTTPS / SSL нажмите Управление сертификатами …

    7. Перейдите на вкладку « Доверенные корневые центры сертификации » и нажмите кнопку « Импорт …» . Откроется мастер импорта сертификатов. Нажмите « Далее», чтобы перейти к экрану « Файл для импорта» .

    8. Нажмите « Обзор» … и выберите файл сертификата, который вы сохранили ранее, затем нажмите « Далее» .

    9. Выберите « Разместить все сертификаты» в следующем хранилище . Выбранный магазин должен быть доверенным корневым центром сертификации . Если это не так, нажмите « Обзор …» и выберите его. Нажмите « Далее» и « Готово».

    10. Нажмите « Да» в предупреждении безопасности.

    11. Перезапустите Chrome.

Linux

Если вы используете Linux, вы также можете следовать этим официальным страницам вики:

  • Настройка SSL-сертификатов в Linux.
  • Совместная firebase database NSS и LINUX
  • Совместное использование базы данных NSS

В основном:

  • щелкните значок блокировки с помощью X,
  • выберите Сертификат
  • перейдите на вкладку «Подробности»
  • Нажмите «Экспорт» … (сохранить как файл)

Теперь следующая команда добавит сертификат (где YOUR_FILE – ваш экспортированный файл):

 certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE 

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

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

Если он все еще не работает, на него может повлиять эта ошибка: проблема 55050: ошибка Ubuntu SSL 8179

PS Пожалуйста, также убедитесь, что у вас есть libnss3-tools , прежде чем вы сможете использовать вышеприведенные команды.

Если у вас его нет, установите его:

 sudo apt-get install libnss3-tools # on Ubuntu sudo yum install nss-tools # on Fedora, Red Hat, etc. 

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

 $ cat add_cert.sh certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1 $ cat list_cert.sh certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs $ cat download_cert.sh echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p' 

Применение:

 add_cert.sh [FILE] list_cert.sh download_cert.sh [DOMAIN] 

Исправление проблем

  • Запустить Chrome с параметром --auto-ssl-client-auth

    google-chrome --auto-ssl-client-auth

Щелкните в любом месте страницы и введите BYPASS_SEQUENCE

« thisisunsafe » – это BYPASS_SEQUENCE для Chrome версии 65

« badidea » Chrome версии 62 – 64.

« danger », используемая для работы в более ранних версиях Chrome

Вам не нужно искать поле ввода, просто введите его. Странно, но он работает.

Я попробовал это на Mac High Sierra.

Чтобы дважды проверить, изменили ли они его, перейдите в «Последний хромовый исходный код»

Чтобы искать BYPASS_SEQUENCE, на данный момент это выглядит так:

 var BYPASS_SEQUENCE = window.atob('dGhpc2lzdW5zYWZl'); 

Теперь они замаскированы, но чтобы увидеть реальный BYPASS_SEQUENCE, вы можете запустить следующую строку в консоли браузера.

 console.log(window.atob('dGhpc2lzdW5zYWZl')); 

Если вы на Mac и не видите вкладку экспорта или как получить сертификат, это сработало для меня:

  1. Нажмите блокировку до https: //
  2. Перейдите на вкладку «Подключение»
  3. Нажмите «Информация о сертификате»

    Теперь вы должны увидеть следующее: Разная информация, конечно, и ваша должны быть отмечены как надежные (в противном случае вы, вероятно, не были бы здесь)

  4. Перетащите значок небольшого сертификата на рабочий стол (или в любом месте).

  5. Дважды щелкните файл .cer, который был загружен, это должно импортировать его в цепочку ключей и открыть Keychain Access для вашего списка сертификатов.

    В некоторых случаях этого достаточно, и теперь вы можете обновить страницу.

    В противном случае:

  6. Дважды щелкните новый сертификат.
  7. В разделе «Подтверждение доверия» измените параметр «При использовании этого сертификата» на «Всегда доверять»,

Теперь перезагрузите страницу, о которой идет речь, и проблема должна быть решена! Надеюсь это поможет.


Редактировать с Вольфа

Чтобы сделать это немного проще, вы можете использовать следующий скрипт ( источник ):

  1. Сохраните следующий скрипт как whitelist_ssl_certificate.ssh :

     #!/usr/bin/env bash -e SERVERNAME=$(echo "$1" | sed -E -e 's/https?:\/\///' -e 's/\/.*//') echo "$SERVERNAME" if [[ "$SERVERNAME" =~ .*\..* ]]; then echo "Adding certificate for $SERVERNAME" echo -n | openssl s_client -connect $SERVERNAME:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | tee /tmp/$SERVERNAME.cert sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" /tmp/$SERVERNAME.cert else echo "Usage: $0 www.site.name" echo "http:// and such will be stripped automatically" fi 
  2. Сделайте исполняемый файл сценария (из оболочки):

     chmod +x whitelist_ssl_certificate.ssh 
  3. Запустите скрипт для нужного вам домена (просто скопируйте / вставьте полный URL-адрес):

     ./whitelist_ssl_certificate.ssh https://your_website/whatever 

На Mac вы можете создать сертификат, которому полностью доверяют Chrome и Safari на системном уровне, выполнив следующие действия:

 # create a root authority cert ./create_root_cert_and_key.sh # create a wildcard cert for mysite.com ./create_certificate_for_domain.sh mysite.com # or create a cert for www.mysite.com, no wildcards ./create_certificate_for_domain.sh www.mysite.com www.mysite.com 

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

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

create_root_cert_and_key.sh

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

create_certificate_for_domain.sh

 #!/usr/bin/env bash if [ -z "$1" ] then echo "Please supply a subdomain to create a certificate for"; echo "eg www.mysite.com" exit; fi if [ ! -f rootCA.pem ]; then echo 'Please run "create_root_cert_and_key.sh" first, and try again!' exit; fi if [ ! -f v3.ext ]; then echo 'Please download the "v3.ext" file and try again!' exit; fi # Create a new private key if one doesnt exist, or use the xeisting one if it does if [ -f device.key ]; then KEY_OPT="-key" else KEY_OPT="-keyout" fi DOMAIN=$1 COMMON_NAME=${2:-*.$1} SUBJECT="/C=CA/ST=None/L=NB/O=None/CN=$COMMON_NAME" NUM_OF_DAYS=999 openssl req -new -newkey rsa:2048 -sha256 -nodes $KEY_OPT device.key -subj "$SUBJECT" -out device.csr cat v3.ext | sed s/%%DOMAIN%%/"$COMMON_NAME"/g > /tmp/__v3.ext openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days $NUM_OF_DAYS -sha256 -extfile /tmp/__v3.ext # move output files to final filenames mv device.csr "$DOMAIN.csr" cp device.crt "$DOMAIN.crt" # remove temp file rm -f device.crt; echo echo "###########################################################################" echo Done! echo "###########################################################################" echo "To use these files on your server, simply copy both $DOMAIN.csr and" echo "device.key to your webserver, and use like so (if Apache, for example)" echo echo " SSLCertificateFile /path_to_your_files/$DOMAIN.crt" echo " SSLCertificateKeyFile /path_to_your_files/device.key" 

v3.ext

 authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%% 

Еще один шаг – Как заставить самоподписанные сертификаты полностью доверять Chrome / Safari

Чтобы позволить самоподписанным сертификатам полностью доверять в Chrome и Safari, вам необходимо импортировать новый центр сертификации на свой Mac. Для этого следуйте этим инструкциям или более подробным инструкциям по этому общему процессу на веб-сайте mitmproxy :

  1. Открыть доступ к Keychain
  2. Выберите «Система» в списке «Брелки»
  3. Выберите «Сертификаты» в списке «Категория»
  4. Выберите «Файл | Импорт товаров …»
  5. Перейдите к файлу, созданному выше, «rootCA.pem», выберите его и нажмите «Открыть»,
  6. Выберите новый импортированный сертификат в списке «Сертификаты».
  7. Нажмите кнопку «i» или щелкните правой кнопкой мыши на своем сертификате и выберите «Получить информацию»,
  8. Разверните опцию «Доверие»
  9. Изменить «При использовании этого сертификата» на «Всегда доверять»
  10. Закройте диалоговое окно, и вам будет предложено ввести пароль.
  11. Закройте и откройте все вкладки, которые используют целевой домен, и они будут загружены надежно!

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

import_certs_in_current_folder_into_java_keystore.sh

 KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts"; function running_as_root() { if [ "$EUID" -ne 0 ] then echo "NO" exit fi echo "YES" } function import_certs_to_java_keystore { for crt in *.crt; do echo prepping $crt keytool -delete -storepass changeit -alias alias__${crt} -keystore $KEYSTORE; keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE echo done } if [ "$(running_as_root)" == "YES" ] then import_certs_to_java_keystore else echo "This script needs to be run as root!" fi 

ОБНОВЛЕНО 3 апреля

Рекомендовано командой Chromium

https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features

Быстрое сверхпрочное решение

Существует секретная фраза обхода, которая может быть введена на страницу с ошибкой, чтобы Chrome продолжал, несмотря на ошибку безопасности: thisisunsafe (в более ранних версиях Chrome, тип badidea и даже раньше – опасность ). НЕ ИСПОЛЬЗУЙТЕ ЭТО, ЕСЛИ ВЫ НЕ ПОНИМАЕТЕ ТОЧНО ПОЧЕМУ ВАМ НУЖНО!

Источник:

https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/

( window.atob('dGhpc2lzdW5zYWZl') что window.atob('dGhpc2lzdW5zYWZl') разрешает thisisunsafe )

Последней версией источника является @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js, а функция window.atob может выполняться в консоли JS.

За информацией о том, почему команда Chrome изменила фразу обхода (первый раз):

https://bugs.chromium.org/p/chromium/issues/detail?id=581189

Если все остальное не удается

Для быстрого одноразового использования, если опция «Продолжить в любом случае» недоступна, и не работает фрейм байпаса, этот взлом работает хорошо:

  1. Разрешить ошибки сертификата из localhost , включив этот флаг (обратите внимание, что Chrome необходимо перезапустить после изменения значения флага):

    chrome://flags/#allow-insecure-localhost

    (и ответ на голосование https://stackoverflow.com/a/31900210/430128 by @Chris)

  2. Если сайт, к которому вы хотите подключиться, является localhost , все готово. В противном случае настройте туннель TCP для прослушивания на порту 8090 локально и подключитесь к broken-remote-site.com на порту 443, убедитесь, что у вас установлен socat и выполните что-то вроде этого в окне терминала:

    socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443

  3. Перейдите в https: // localhost: 8090 в своем браузере.

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

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

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

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

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

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

chrome://restart

WINDOWS JUN / 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 (File / Add or Remove Snap-ins / Certificates / Add / Computert Account / 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» в доверенные корневые сертификаты по-разному, но я все равно получаю такую ​​же ошибку:

введите описание изображения здесь

Но я понял, что мне нужно импортировать сертификат корневого права, а не сертификат для домена. Поэтому я использовал консоль mmc (File / Add or Remove Snap-ins / Certificates / Add / Computert Account / LocalComputer / OK). Я импортировал файл rootCA.pem в хранилища доверенных корневых сертификатов.

введите описание изображения здесь

Перезагрузите Chrome и работайте с ним.

С localhost:

введите описание изображения здесь

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

введите описание изображения здесь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

введите описание изображения здесь

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

введите описание изображения здесь

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

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

 certutil -addstore -user "ROOT" cert.pem 
  • ROOT – это внутреннее имя хранилища сертификатов, упомянутое ранее.
  • cert.pem – это имя вашего самозаверяющего сертификата.

This post is already flooded with responses, but I created a bash script based on some of the other answers to make it easier to generate a self-signed TLS certificate valid in Chrome (Tested in Chrome 65.x ). Hope it’s useful to others.

self-signed-tls bash script

After you install ( and trust ) the certificate, don’t forget to restart Chrome ( chrome://restart )


Another tool worth checking out is CloudFlare’s cfssl toolkit:

cfssl

As of Chrome 58+ I started getting certificate error on macOS due missing SAN. Here is how to get the green lock on address bar again.

  1. Generate a new certificate with the following command:

     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. Import the server.crt into your KeyChain, then double click in the certificate, expand the Trust , and select Always Trust

Refresh the page https://domain.dev in Google Chrome, so the green lock is back.

For development purposes on Windows you can
add to Chrome shortcut flag --ignore-certificate-errors

It expected to ignore certificate errors and allow you to access invalid certificate websites.
Better detailed instructions in https://support.opendns.com/entries/66657664 .

введите описание изображения здесь

2017-06-27 newest method:

 openssl req \ -newkey rsa:2048 \ -x509 \ -nodes \ -keyout yoursite.key \ -new \ -out yoursite.crt \ -subj /CN=yoursite.dev \ -reqexts SAN \ -extensions SAN \ -config < (cat /System/Library/OpenSSL/openssl.cnf \ <(printf '[SAN]\nsubjectAltName=DNS:yoursite.dev')) \ -sha256 \ -days 3650 

then, add yoursite.crt and yoursite.key to your nginx conf.

from: https://github.com/webpack/webpack-dev-server/issues/854

I tried everything and what made it work: When importing, select the right category, namely Trusted Root Certificate Authorities :

(sorry it’s German, but just follow the image)

введите описание изображения здесь

I had to tweak the Chrome launcher on macosx and added below script. Saved it as below;

/Applications/Google\ Chrome.app/Contents/MacOS/Chrome.command

 #!/bin/sh RealBin="Google Chrome" AppDir="$(dirname "$0")" exec "$AppDir/$RealBin" --ignore-certificate-errors "$@" 

When I start Chrome with this script self-signed certificates are working without a problem. But don’t browse the web with the browser launched with this script you will not be warned about invalid certificates!

Это сработало для меня. See: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc

In the address bar, click the little lock with the X. This will bring up a small information screen. Click the button that says “Certificate Information.”

Click and drag the image to your desktop. It looks like a little certificate.

Double-click it. This will bring up the Keychain Access utility. Enter your password to unlock it.

Be sure you add the certificate to the System keychain, not the login keychain. Click “Always Trust,” even though this doesn’t seem to do anything.

After it has been added, double-click it. You may have to authenticate again.

Expand the “Trust” section.

“When using this certificate,” set to “Always Trust”

I was experiencing the same issue: I had installed the certificate in to Windows’ Trusted Root Authorities store, and Chrome still refused the certificate, with the error ERR_CERT_COMMON_NAME_INVALID . Note that when the certificate is not properly installed in the store, the error is ERR_CERT_AUTHORITY_INVALID .

As hinted by the name of the error, this comment , and this question , the problem was lying in the declared domain name in the certificate. When prompted for the “Common Name” while generating the certificate, I had to enter the domain name I was using to access the site ( localhost in my case). I restarted Chrome using chrome://restart and it was finally happy with this new certificate.

I fixed this problem for myself without changing the settings on any browsers with proper SSL certifications. I use a mac so it required a keychain update to my ssl certifications. I had to add subject alt names to the ssl certification for chrome to accept it. As of today, this is for Chrome version number: 62.0.3202.94

My example are easy to use commands and config files:

add these files and this example is all in one root directory

ssl.conf

 [ req ] default_bits = 4096 distinguished_name = req_distinguished_name req_extensions = req_ext [ req_distinguished_name ] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) organizationName = Organization Name (eg, company) commonName = Common Name (eg server FQDN or YOUR name) commonName_max = 64 [ req_ext ] subjectAltName = @alt_names [alt_names] DNS.1 = localhost 

Run command to create certification:

 openssl req -newkey rsa:4096 -nodes -keyout key.pem -x509 -days 3650 -out certificate.pem -extensions req_ext -config ssl.conf -subj '/CN=localhost/O=Stackflow/C=US/L=Los Angeles/OU=StackflowTech' 

For macs only to add trusted certification (required):

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

For windows you will have to find how to verify our ssl certs locally independently. I don’t use Windows. Sorry windows guys and gals.

I am using a node.js server with express.js with only requires my key and certification with something like this:

app.js

 const https = require('https'); const Express = require('express'); const fs = require('fs'); const app = new Express(); const server = https.createServer({ key: fs.readFileSync('./key.pem'), cert: fs.readFileSync('./certificate.pem'), }, app); server.listen(3000); 

I may be doing this for other backend frames in the future, so I can update example this for others in the future. But this was my fix in Node.js for that issue. Clear browser cache and run your app on https://

Here’s an example of running https://localhost on a Node.js server for Mac users:

https://github.com/laynefaler/Stack-Overflow-running-HTTPS-localhost

Счастливое кодирование!

This is something that keeps coming up — especially for Google Chrome on Mac OS X Yosemite!

Thankfully, one of our development team sent me this link today, and the method works reliably, whilst still allowing you to control for which sites you accept certificates.

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

jersully posts:

If you don’t want to bother with internal certificates…

  1. Type chrome://flags/ in the address bar.
  2. Scroll to or search for Remember decisions to proceed through SSL errors for a specified length of time.
  3. Select Remember for three months.

SSL / HTTPS localhost fix on the mac / osx:

  1. Click the red lock with the cross in your address bar when trying to open your https localhost environment. There’ll open a window with some information about the certificate.

  2. Click on “Details” information window

  3. The chrome Developer tools opens on the tab ‘Security’. Click on View Certificate . The certificate image
  4. Add it to your ‘System’ keychain (not your ‘login’ keychain which is selected by default).

  5. Open your keychain (again) and find the certificate. Click on it and make sure you “Trust” all.

  6. Restart chrome and it should work.

What am I supposed to do to get Chrome to accept the certificate and stop complaining about it?

You should create a PKI with;

1) self-signed Root CA.
2) sub / intermediate certificate [signed by Root CA].
3) normal / end-entity certificate [signed either by Root CA or sub-CA] (commonName or subjectAltName (SAN) as localhost) (also include https://localhost/ as the URI in SAN).
4) Import / Install that Root CA in your Windows OS (because you mentioned IE. Google Chrome is using the same resources while looking for certificates chain – https://www.chromium.org/Home/chromium-security/root-ca-policy ) as ‘Trusted Root Certification Authorities’.
5) Install that end-entity certificate as your web server certificate, and it stops complaining that error message.

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

It didn’t work for me when I tried to import the certificate in the browser… In chrome open Developer Tools > Security, and select View certificate. Click the Details tab and export it.

// LINUX

 sudo apt-get install libnss3-tools certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH] 

Run this command and if you see the file You’ve just imported You are good to go!

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

// Windows

 Start => run => certmgr.msc 

On the left side select Trusted Root Certification Authorities => Personal. Click on actions tab => All actions/import then choose the file You exported before from the browser

Don’t forget to restart chrome!!!

GOOD LUCK! 😉

For Chrome on MacOS, if you have prepared a certificate:

  • Quit Chrome ( cmd + Q ).
  • Start the Keychain Access app and open the “Certificates” category.
  • Drag your certificate file onto the Keychain Access window and type the password for the certificate file.
  • Double click on your certificate and unfold the “Trust” list.
    • In row “When using this certificate,” choose “Always Trust.”
    • Close this stuff and type your password.
  • Start Chrome and clear all caches.
  • Check that everything is ok.
Interesting Posts

Может ли GNU sed (для Windows) обрабатывать Unicode? Если да, то это проблема с кодовой страницей / языковой версией или с коммутатором?

Как обрабатывать уведомление, когда приложение находится в фоновом режиме в Firebase

Entity Framework: Где я могу расширить CSDL / MSL?

Как отключить автоматическое увеличение микрофона в объеме?

android.os.FileUriExposedException: файл: ///storage/emulated/0/test.txt выставляется вне приложения через Intent.getData ()

Мониторинг полосы пропускания в персональной сети

Каков правильный способ убить vncsession в Linux?

.NET Events – Что такое отправитель объекта и EventArgs?

Когда следует использовать составной индекс?

Тестирование указателей на достоверность (C / C ++)

Как устранить замораживание или медленность Windows?

Рассчитать разницу во времени в Excel 2003

Как поддерживать различные размеры экрана в android

byte поиск шаблона массива

Перенаправить stdout в файл, когда процесс выполняется в фоновом режиме

Давайте будем гением компьютера.