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

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

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

Ответ 1

Только для localhost :

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

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

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

Нажмите Enable.

Ответ 2

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

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

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

РЕДАКТИРОВАТЬ: Я попробовал это снова на новом компьютере, и сертификат не появился в окне "Управление сертификатами", просто перейдя с красной страницы ненадежного сертификата. Я должен был сделать следующее:

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

Ответ 3

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

Начиная с Chrome 58, возможность идентифицировать хост, используя только commonName , была удалена. Сертификаты теперь должны использовать subjectAltName для идентификации своих хостов. Смотрите дальнейшее обсуждение здесь и отслеживание ошибок здесь. В прошлом 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

Ответ 4

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

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

В принципе:

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

Ответ 5

Щелкните в любом месте страницы и введите 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'));

Ответ 6

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

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

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

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

    2. Перейдите на вкладку Details, нажмите кнопку Copy to File.... Откроется мастер экспорта сертификатов, нажмите кнопку " Далее", чтобы перейти на экран " Формат файла экспорта".

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

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

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

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

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

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

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

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

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

Ответ 7

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: ошибка Ubuntu SSL 8179

P.S. Также убедитесь, что у вас есть 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

Ответ 8

На 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=825
    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

Ответ 9

Если вы на 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

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

  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
    

Ответ 10

ОБНОВЛЕНО 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') что window.atob('dGhpc2lzdW5zYWZl') thisisunsafe в 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

    (и ответ с правом голоса fooobar.com/questions/12817/... от @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 в вашем браузере.

Ответ 11

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

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

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

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

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

Ответ 12

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

chrome://restart

Ответ 13

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 (Файл/Добавить или удалить оснастки/Сертификаты/Добавить/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 и et voilà работает.

С localhost:

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

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

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

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

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

Ответ 14

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

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

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

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

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

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

Ответ 15

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

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

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

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

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

Ответ 16

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

enter image description here

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

enter image description here

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

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

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

Ответ 17

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

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

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


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

cfssl

Ответ 18

Начиная с 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, чтобы зеленый замок вернулся.

Ответ 19

Я перепробовал все и что заставило его работать: при импорте выберите правильную категорию, а именно доверенные корневые центры сертификации:

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

enter image description here

Ответ 20

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
)

Ответ 21

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

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

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

Ответ 22

Чтобы создать в 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!!

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

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

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

Ответ 23

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

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

Ответ 24

Для 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

Ответ 25

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

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

Ответ 26

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

/Приложения/Google\Chrome.app/Contents/MacOS/Chrome.command

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

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

Ответ 27

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

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

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

jersully posts:

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

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

Ответ 28

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

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

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

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

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

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

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

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

Ответ 29

Исправить для Chrome в Windows.

Сначала вам нужно экспортировать сертификат.

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

Чтобы импортировать

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

Ответ 30

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

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