Я создал самоподписанный сертификат 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 можно найти здесь.
-
На сайте, который вы хотите добавить, щелкните правой кнопкой мыши красный значок замка в адресной строке: ![enter image description here]()
-
Перейдите на вкладку " Соединение", затем нажмите " Информация о сертификате".
-
Перейдите на вкладку Details, нажмите кнопку Copy to File.... Откроется мастер экспорта сертификатов, нажмите кнопку " Далее", чтобы перейти на экран " Формат файла экспорта".
-
Выберите DER-кодированный двоичный файл X.509 (.CER), нажмите Далее.
-
Нажмите Обзор... и сохраните файл на свой компьютер. Назовите это что-нибудь описательное. Нажмите Далее, затем нажмите Готово.
-
Откройте настройки Chrome, прокрутите вниз и нажмите Показать дополнительные настройки...
-
Под HTTPS/SSL, нажмите Управление сертификатами...
-
Перейдите на вкладку " Надежные корневые центры сертификации ", затем нажмите кнопку " Импорт...". Откроется мастер импорта сертификатов. Нажмите Далее, чтобы перейти к экрану " Файл для импорта".
-
Нажмите Обзор... и выберите файл сертификата, который вы сохранили ранее, затем нажмите Далее.
-
Выберите Поместить все сертификаты в следующем магазине. Выбранный магазин должен быть доверенным корневым центром сертификации. Если это не так, нажмите Обзор... и выберите его. Нажмите Далее и Готово
-
Нажмите Да в предупреждении безопасности.
-
Перезапустите 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]
Устранение неполадок
Ответ 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
Если вы хотите создать новый самозаверяющий сертификат с полным доверием, используя собственные полномочия 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
:
- Открытый доступ к связке ключей
- Выберите "Система" в списке "Брелки"
- Выберите "Сертификаты" в списке "Категория"
- Выберите "Файл | Импортировать элементы..."
- Найдите созданный выше файл "rootCA.pem", выберите его и нажмите "Открыть"
- .Выберите свой недавно импортированный сертификат в списке "Сертификаты".
- Нажмите кнопку "i" или щелкните правой кнопкой мыши свой сертификат и выберите "Получить информацию"
- Разверните параметр "Доверие"
- Измените "При использовании этого сертификата" на "Всегда доверять"
- Закройте диалоговое окно, и вам будет предложено ввести пароль.
- Закройте и снова откройте все вкладки, которые используют целевой домен, и он будет безопасно загружен!
и в качестве бонуса, если вам нужны 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 и не видите вкладку экспорта или как получить сертификат, это сработало для меня:
- Нажмите на замок перед https://
- Перейти на вкладку "Подключение"
-
Нажмите "Информация о сертификате"
Теперь вы должны увидеть это: ![Different information of course and yours should be marked as trusted yet (otherwise you probably wouldn't be here)]()
-
Перетащите этот маленький значок сертификата на свой рабочий стол (или куда угодно).
-
Дважды щелкните файл.cer, который был загружен, это должно импортировать его в вашу цепочку для ключей и открыть Доступ цепочки для ключей к вашему списку сертификатов.
В некоторых случаях этого достаточно, и теперь вы можете обновить страницу.
Иначе:
- Дважды щелкните по вновь добавленному сертификату.
- В раскрывающемся списке доверия измените параметр "При использовании этого сертификата" на "Всегда доверять".
Теперь перезагрузите страницу, о которой идет речь, и проблема должна быть решена! Надеюсь это поможет.
Редактировать от Wolph
Чтобы сделать это немного проще, вы можете использовать следующий скрипт (источник):
-
Сохраните следующий скрипт как 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
-
Сделайте скрипт исполняемым (из оболочки):
chmod +x whitelist_ssl_certificate.ssh
-
Запустите скрипт для домена, который вы хотите (просто скопируйте/вставьте полный 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
Если все остальное терпит неудачу
Для быстрых разовых попыток, если опция "Продолжить в любом случае" недоступна или обходная фраза не работает, этот хак работает хорошо:
-
Разрешите ошибки сертификата от localhost
, включив этот флаг (обратите внимание, что Chrome необходимо перезапустить после изменения значения флага):
chrome://flags/#allow-insecure-localhost
(и ответ с правом голоса fooobar.com/questions/12817/... от @Chris)
-
Если сайт, к которому вы хотите подключиться, является localhost
, все готово. В противном случае настройте TCP-туннель для локального прослушивания порта 8090 и подключения к broken-remote-site.com
порт 443, убедитесь, что у вас установлен socat
и запустите что-то подобное в окне терминала:
socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443
-
Перейдите на 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. Вот как снова получить зеленый замок в адресной строке.
Создайте новый сертификат с помощью следующей команды:
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
Импортируйте 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 "$@"
Когда я запускаю 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
, и он был наконец доволен этим новым сертификатом.