it-roy-ru.com

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

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

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

990
pjohansson

Только для localhost:

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

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

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

Нажмите Enable.

556
Chris

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

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

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

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

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

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

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

В принципе:

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

ОБНОВЛЕНИЕ ДЛЯ CHROME 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

129
Toby J

Нажмите в любом месте на странице и введите 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'));
92
Yevgeniy Afanasyev

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

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

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

    1. Нажмите на вкладку с надписью Соединение , затем нажмите Информация о сертификате

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

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

    4. Нажмите Обзор ... и сохраните файл на свой компьютер. Назовите это что-нибудь описательное. Нажмите Далее , затем нажмите Готово .

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

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

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

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

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

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

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

90
kmgdev

Linux

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

В принципе:

  • нажмите значок замка с 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: Ошибка SSL Ubuntu 8179

Постскриптум Также убедитесь, что у вас есть 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

88
kenorb

На 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 для во избежание ошибок пропуска альтернативного имени субъекта

Если вы хотите создать новый самозаверяющий сертификат, которому полностью доверяют, используя свои собственные полномочия 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 "e.g. 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 :

Это можно сделать одним из двух способов в командной строке, используя эту команду, которая запросит у вас пароль:

$ Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain rootCA.pem

или с помощью приложения Keychain Access:

  1. Открытый доступ к брелку
  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
74
Brad Parks

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

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

    Теперь вы должны увидеть это: Different information of course and yours should be marked as trusted yet (otherwise you probably wouldn't be here)

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

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

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

    Иначе:

  6. Дважды щелкните по вновь добавленному сертификату.
  7. В раскрывающемся списке доверия измените параметр "При использовании этого сертификата" на "Всегда доверять".

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


Редактировать из Wolph

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

  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
    
56
LunaCodeGirl

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

Рекомендовано командой 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') преобразуется в 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 автор @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: 809 в вашем браузере.

39
Raman

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

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

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

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

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

34
Kieran Moore

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

chrome://restart

18
DejerNet

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/Локальный компьютер/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 и ​​т.д., И все работает.

С localhost:

enter image description here

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

enter image description here

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

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

17
UUHHIVS

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

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

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

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

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

Как создать самозаверяющий сертификат в IIS 7

12
Ira Rainey

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

enter image description here

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

enter image description here

Он сообщает вам, какое хранилище сертификатов является правильным, это Trusted Root Certification Authorities хранилище.

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

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

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

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

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

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

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

6
James Oravec

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

самозаверяющий скрипт bash

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


Еще один инструмент, который стоит проверить - это набор инструментов cfssl CloudFlare:

cfssl

5
Logan

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

из документов:

В Linux Chromium использует общую базу данных NSS. Если встроенный менеджер не работает для вас, то вы можете настроить сертификаты с помощью инструментов командной строки 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
TetraDev

Начиная с 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
Adriano Rosa

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

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

enter image description here

4
Hannes Schneidermayer

2017-06-27 новейший метод:

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

затем добавьте yoursite.crt и yoursite.key в вашу конфигурацию nginx.

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

3
zhi.yang

У меня не получилось, когда я попытался импортировать сертификат в браузер ... В chrome откройте Инструменты разработчика> Безопасность и выберите Просмотр сертификата. Перейдите на вкладку "Подробности" и экспортируйте ее.

// LINUX

Sudo apt-get install libnss3-tools 

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

Запустите эту команду, и если вы видите файл, который вы только что импортировали, вы готовы!

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

// Windows

Start => run => certmgr.msc

С левой стороны выберите Доверенные корневые центры сертификации => Личные. Нажмите на вкладку действия => Все действия/импорт, затем выберите файл, который вы экспортировали ранее из браузера

Не забудьте перезапустить Chrome !!!

УДАЧИ! ;)

3
Fodort

Мне пришлось настроить Chrome на Macosx и добавить ниже скрипт. Сохранено как ниже;

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

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

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

3
aug70co

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

В адресной строке нажмите маленький замок с X. Это вызовет небольшой информационный экран. Нажмите кнопку с надписью "Информация о сертификате".

Нажмите и перетащите изображение на рабочий стол. Похоже на маленький сертификат.

Дважды щелкните по нему. Это вызовет утилиту Keychain Access. Введите свой пароль, чтобы разблокировать его.

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

После того, как он был добавлен, дважды щелкните по нему. Возможно, вам придется подтвердить подлинность снова.

Разверните раздел "Доверие".

"При использовании этого сертификата" установите "Всегда доверять"

3
Vincil Bishop

Это то, что продолжает появляться - особенно для Google Chrome в Mac OS X Yosemite!

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

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

jersully сообщений:

Если вы не хотите беспокоиться о внутренних сертификатах ...

  1. Введите chrome://flags/ в адресной строке.
  2. Прокрутите или найдите Помните о решениях, чтобы пройти через ошибки SSL в течение указанного промежутка времени.
  3. Выберите Запомнить на три месяца.
3
John Landells

Для Fedora и Ubuntu, если вы получаете ошибку example.com Not a Certification authority при добавлении сертификата с помощью графического интерфейса для добавления нового корневого органа.

Попробуйте следующее с сертифицированным экспортированным из chrome, любой формат работает (base64 chain/singe, pkcs 7, der binary и т.д.). Это сработало для меня, когда все методы графического интерфейса потерпели неудачу.

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

Чтобы увидеть изменения, перезапустите Chrome, при необходимости убейте его из фона. Firefox все равно будет жаловаться.

Чтобы позже удалить его, если это необходимо, перейдите в Chrome -> Настройки -> Дополнительно -> Управление сертификатами -> Серверы, и он, наконец, появится там, где его можно удалить.

Источник, предупреждение, очень очень пятнистый и частично устаревший: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

2
Ray Foss

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

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

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

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

2
Konsortium ICT Pantai Timur

Я исправил эту проблему для себя, не изменяя настройки в любых браузерах с соответствующими сертификатами SSL. Я использую Mac, поэтому он требует обновления брелка для моих сертификатов SSL. Мне пришлось добавить альтернативные имена субъекта в сертификацию ssl для chrome, чтобы принять его. На сегодняшний день это для Chrome номер версии: 62.0.3202.94

Мой пример прост в использовании команд и конфигурационных файлов:

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

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 (e.g. server FQDN or YOUR name)
commonName_max              = 64

[ req_ext ]
subjectAltName = @alt_names

[alt_names]
DNS.1   = localhost

Запустите команду для создания сертификации:

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'

Только для Mac, чтобы добавить доверенную сертификацию (обязательно):

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

Для окон вы должны будете найти, как проверить наши ssl-сертификаты локально независимо. Я не использую Windows. Извините, парни и девочки.

Я использую сервер node.js с express.js, для которого требуется только мой ключ и сертификация примерно так:

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);

Возможно, я буду делать это для других фреймов в будущем, поэтому я могу обновить пример для других в будущем. Но это было мое исправление в Node.js для этой проблемы. Очистите кеш браузера и запустите ваше приложение на https: //

Вот пример выполнения https: // localhost на сервере Node.js для пользователей Mac:

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

Удачного кодирования!

2
Layne Faler

Для Chrome в MacOS, если вы подготовили сертификат:

  • Выйти Chrome (cmd+Q).
  • Запустите приложение Keychain Access и откройте категорию "Сертификаты".
  • Перетащите файл сертификата в окно доступа к связке ключей и введите пароль для файла сертификата.
  • Дважды щелкните свой сертификат и разверните список "Доверие".
    • В строке "При использовании этого сертификата" выберите "Всегда доверять".
    • Закройте этот материал и введите свой пароль.
  • Запустите Chrome и ​​очистите все кэши.
  • Проверьте, что все в порядке.
2
Alykoff Gali

Я имел успех после ответа Келлен с виталом обновление от Тоби Дж , но мне пришлось сделать эту ревизию:

При создании самозаверяющего сертификата необходимо было поместить новое поле 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's обновил шаги.

2
msw1520

Разрешение небезопасного локального хоста нормально работать с помощью этого метода chrome: // flags/# allow-insecure-localhost

Просто вам нужно создать ваше имя хоста разработки для xxx.localhost.

2
Soya Bean

Исправлена ​​ошибка для Chrome в Windows.

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

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

Импортировать

  • Перейти к Chrome Настройки
  • Нажмите на "Дополнительные настройки"
  • Под HTTPS/SSL нажмите "Управление сертификатами"
  • Перейти к "Доверенные корневые центры сертификации"
  • Нажмите "Импортировать"
  • Появится всплывающее окно, в котором вас спросят, хотите ли вы установить этот сертификат. Нажмите "да".
2
user2871617
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
Alex Ivasyuv

Для целей разработки на Windows вы можете
добавить в Chrome ярлык --ignore-certificate-errors

Ожидается, что он проигнорирует ошибки сертификата и позволит вам получить доступ к недействительным сайтам сертификатов.
Более подробные инструкции в https://support.opendns.com/entries/66657664 .

enter image description here

2
Binyamin

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

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

2
Hugo Wood

SSL/HTTPS localhost исправить на mac/osx:

  1. Нажмите на красный замок с крестиком в адресной строке, когда пытаетесь открыть свою локальную среду https. Там откроется окно с некоторой информацией о сертификате.

  2. Нажмите на "Детали" информационное окно

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

  5. Откройте вашу связку ключей (снова) и найдите сертификат. Нажмите на нее и убедитесь, что вы "доверяете" всем.

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

2
cscheltinga

Чтобы создать в 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. Затем перетащите только что созданный сертификат в доверенные корневые центры сертификации\- Сертификаты в соответствии с приведенным ниже снимком экрана. enter image description here

1
mpowrie

Ни один из приведенных выше ответов не помог мне в 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
phil_lgr

Вот решение, использующее только 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
schlm3