Назад | Перейти на главную страницу

Сертификат SSL работает в Chrome, но не в openssl s_client или curl

Обновление Google Chrome до версии 58 начало аннулировать мои самозаверяющие сертификаты несколько дней назад. Он жаловался на пропажу subjectAltNames. Я провел небольшое исследование и попробовал несколько предложений (которые не сработали), но затем обнаружил эта почта, единственный, с которым я мог работать.

Или я?

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

до того как, Я попал на страницу в своем PHP веб-приложение, которое требует загрузки данных из другого микро-веб-сервиса на той же машине разработчика.

stream_socket_client (): операция SSL завершилась неудачно с кодом 1. Сообщения об ошибках OpenSSL: ошибка: 14090086: подпрограммы SSL: ssl3_get_server_certificate:

Я гуглил и возился с этим около 4 часов, и просто не могу об этом подумать.

Вопрос

Почему хром принимает мой сертификат. ОДНАКО инструменты вроде curl, openssl s_client все дает мне unable to verify the first certificate или invalid certificate? Я попытался передать сертификат в качестве параметра, но все еще недействителен.

Отладка с помощью curl и openssl, передавая файл сертификата в качестве параметра, продолжает давать мне эту ошибку

Результат проверки сертификата SSL: невозможно получить сертификат местного эмитента (20),

Думаю, к концу дня я буду полностью лысым.

Ноты

Отменить обновление

Я регенерировал новый сертификат с отключенным расширением v3 и сообщением "Назад в Chrome" subjectAltName отсутствует, но завиток работает. Мне нужно решить, как создать сертификаты, которые будут принимать и curl, и chrome.

Найти более четкое руководство это было намного проще openssl.conf. В моих первоначальных попытках добавить SAN■ У меня должны быть некомментированные лишние строки в conf, которые добавляли дополнительную информацию к сертификатам, вызывающим конфликты. Следуя этому шаблону, мой сертификат работает со всех сторон:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = US
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = MN
localityName = Locality Name (eg, city)
localityName_default = Minneapolis
organizationalUnitName  = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max  = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = kb.example.com
DNS.2 = helpdesk.example.org
DNS.3 = systems.example.net
IP.1 = 192.168.1.1
IP.2 = 192.168.69.14

Спасибо за комментарии @garethTheRed. Ваши комментарии помогли мне переосмыслить мой подход к отладке этой проблемы.

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