Я создал самозаверяющий сертификат, используя следующую команду с помощью OpenSSL 1.1.1b (26 февраля 2019 г.):
openssl req -nodes -new --days 900 -subj /CN=192.168.0.104:8080 -x509 -keyout server.key -out server.crt
Затем я использовал окна ммс импортировал полученный файл server.crt в Корень консоли -> Сертификаты - Текущий пользователь -> Доверенные корневые центры сертификации -> Сертификаты
Когда я перехожу на страницу в chrome tho по адресу 192.168.0.104:8080, он сообщает мне, что страница «Небезопасна» (хотя, если я смотрю на информацию о сертификате, в статусе сертификата в разделе «Путь сертификации» указано «Этот сертификат в порядке».
Я проделал аналогичный процесс на своем телефоне Android, загрузив его на свой телефон, добавив сертификат в раздел настроек шифрования и учетных данных.
Однако когда я перехожу на страницу, она сообщает мне, что «сертификат сервера не соответствует URL-адресу».
Что я здесь делаю не так?
Обновить:
Сейчас я использую req.conf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = CA
L = Belmont
O = N/A
OU = N/A
CN = 192.168.0.104
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.0 = localhost
IP.0 = 192.168.0.104
И создаем сертификат и ключ с помощью:
openssl req -x509 -nodes -days 999 -newkey rsa:2048 -keyout server.key -out server.crt -config req.conf
Затем я перезапустил хром в Windows (я не могу поверить, что перезапуск программ, чтобы настройки вступили в силу, все еще необходимо в 2019 году). Windows Chrome тогда распознает это нормально.
Однако на Android я даже не могу установить этот сертификат - он говорит мне: «Для установки сертификата требуется закрытый ключ». Это еще больше сбивает с толку.
-addext
к req -new -x509
, но в противном случае вам нужно установить SAN в файле конфигурации хотя бы логически - хотя в Unix, а я верить WSL, вы можете заставить оболочку создать этот файл конфигурации как автоматический временный файл с <(commands)
(или в zsh =(commands)
). Видеть:Создание самозаверяющего сертификата с помощью openssl, который работает в Chrome 58
Не удается избавиться от ошибки net :: ERR_CERT_COMMON_NAME_INVALID в Chrome с самозаверяющими сертификатами
https://security.stackexchange.com/questions/172440/generate-x509-err-cert-common-name-invalid
https://security.stackexchange.com/questions/74345/provide-subjectaltname-to-openssl-directly-on-command-line
https://security.stackexchange.com/questions/158632/burp-suite-although-my-configurations-are-correct-still-chrome-doesnt-allows
но обратите внимание, что эти вопросы касаются сертификата для имени домена, который использует DNS типа записи SAN; для IP-адреса вам необходимо использовать IP.
PS: 8080 обычно используется для альтернативного HTTP, а 8443 - для альтернативного HTTPS. Использование 8080 для HTTPS сбивает с толку.