it-swarm.com.ru

Создание самозаверяющего сертификата для домена и поддоменов - NET :: ERR_CERT_COMMON_NAME_INVALID

Я следовал this учебник по созданию подписанных SSL-сертификатов в Windows для целей разработки, и он отлично работал для одного из моих доменов (я использую файл hosts для имитации DNS). Затем я решил, что у меня много поддоменов, и это было бы проблемой для создания сертификата для каждого из них. Поэтому я попытался создать сертификат с использованием подстановочного знака в поле Common, как предлагалось в некоторых ответах на serverfault. Как это:

Common Name: *.myserver.net/CN=myserver.net

Однако после импорта этого сертификата в Trusted Root Certification Authority я получаю ошибку NET::ERR_CERT_COMMON_NAME_INVALID в Chrome для основного домена и всех его поддоменов, например: https://sub1.myserver.net и https://myserver.net.

Этот сервер не может доказать, что это myserver.net; его сертификат безопасности от * .myserver.net/CN = myserver.net.

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

Что-то не так в поле Common Name, которое вызывает эту ошибку?

73
Zed

Как сказал Рахул, это распространенная ошибка Chrome и ​​OSX. У меня были подобные проблемы в прошлом. На самом деле я, наконец, устал от 2 (да, я знаю, что это не так много) дополнительных кликов при тестировании локального сайта для работы.

Что касается возможного обходного пути к этой проблеме [с использованием Windows], я бы использовал одну из многих доступны утилиты для подписи сертификатов .

Рекомендуемые шаги:

  1. Создать самоподписанный сертификат
  2. Импортировать сертификат в диспетчер сертификатов Windows
  3. Импортировать сертификат в Chrome Диспетчер сертификатов
    ПРИМЕЧАНИЕ: Шаг 3 разрешит возникшую проблему один раз Google исправляет ошибку ... учитывая, что время, которое прошло, устарело, в обозримом будущем не будет ETA. **

    Столько, сколько я предпочитаю использовать Chrome для разработки, я недавно обнаружил в Firefox Developer Edition . который не имеет этой проблемы.

    Надеюсь это поможет :)
18
Thomas.Donnelly

Chrome 58 имеет прекращена поддержка сертификатов без альтернативных имен субъектов .

Двигаясь вперед, это может быть еще одной причиной возникновения этой ошибки.

56
Michael Renner

Обходной путь - добавить доменные имена, которые вы используете как "subjectAltName" (альтернативное имя субъекта X509v3). Это можно сделать, изменив конфигурацию OpenSSL (/etc/ssl/openssl.cnf в Linux) и изменив раздел v3_req следующим образом:

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = sub1.myserver.net

Имея это в виду, не забудьте использовать переключатель -extensions v3_req при создании нового сертификата. (см. также Как я могу создать самозаверяющий сертификат с SubjectAltName, используя OpenSSL? )

25
Fabian S

Создайте файл openssl.conf:

[req]
default_bits = 2048
default_keyfile = oats.key
encrypt_key = no
utf8 = yes
distinguished_name = req_distinguished_name
x509_extensions = v3_req
Prompt = no

[req_distinguished_name]
C = US
ST = Cary
L = Cary
O  = BigCompany
CN = *.myserver.net

[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = myserver.net
DNS.2 = *.myserver.net

Запустите эту команду:

openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout app.key -out app.crt  -config openssl.conf

Выходные файлы app.crt и app.key работают для меня.

11
Alykoff Gali

Ваш подстановочный знак *.example.com не покрывает корневой домен example.com, но охватывает любой вариант в sub - домен, такой как www.example.com или test.example.com

Предпочтительный метод состоит в том, чтобы установить альтернативные имена субъекта, например, в ответ Фабиана , но имейте в виду, что Chrome в настоящее время требует, чтобы общее имя дополнительно было указано в качестве одного из альтернативных имен субъекта (как это правильно продемонстрировано в его ответе). Я недавно обнаружил эту проблему, потому что у меня было общее имя example.com с SANs www.example.com и test.example.com, но я получил предупреждение NET::ERR_CERT_COMMON_NAME_INVALID от Chrome. Мне пришлось сгенерировать новый запрос на подпись сертификата с example.com в качестве общего имени и одного из SAN. Затем Chrome полностью доверяет сертификату. И не забудьте импортировать корневой сертификат в Chrome в качестве доверенного органа для идентификации веб-сайтов.

11
Jeff Puckett

Я думаю, что это может быть ошибка в Chrome. Давным-давно была похожая проблема: Смотрите это.

Попробуйте в другом браузере. Я думаю, что это должно работать нормально.

5
Rahul Sreeram

Для всех, кто сталкивается с этим и хочет принять риск для его тестирования, есть решение: перейдите в режим инкогнито в Chrome, и вы сможете открыть "Дополнительно" и нажать "Перейти к некоторым". .url".

Это может быть полезно, если вам нужно проверить какой-либо веб-сайт, который вы ведете сами, и просто тестировать как разработчик (и когда у вас еще не настроен надлежащий сертификат разработки).

Конечно, это НЕ ДЛЯ ЛЮДЕЙ, использующих веб-сайт в производстве, где эта ошибка указывает на проблему с безопасностью веб-сайта.

1
bashmish

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

В качестве обходного пути можно создать раздел реестра Windows, чтобы позволить Google Chrome использовать commonName сертификата сервера для сопоставления имени хоста, если в сертификате отсутствует расширение subjectAlternativeName, при условии, что оно успешно проверяет и создает цепочки в локально установленные сертификаты CA.

Тип данных: Boolean [Windows: REG_DWORD] Местоположение реестра Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome Имя предпочтения Windows/Mac/Linux/Android: EnableCommonNameFallbackForLocalAnchors Значение: 0x00000001 (Windows), true (Linux), true (Android), (Mac) Чтобы создать раздел реестра Windows, просто выполните следующие действия:

Откройте Блокнот Скопируйте и вставьте следующее содержимое в блокнот Редактор реестра Windows версии 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "EnableCommonNameFallbackForLocalAnchors" = dword: 00000001 Перейдите в Файл> Сохранить как имя файла: any_filename.reg Сохранить как тип: Все файлы

Выберите предпочтительное место для файла

Нажмите на Сохранить

Дважды щелкните по сохраненному файлу для запуска

Нажмите Да в предупреждении редактора реестра

Нашел эту информацию на странице поддержки Symantec: https://support.symantec.com/en_US/article.TECH240507.html

0
ambidexterous