Цепочка сертификатов не может быть построена на доверенном корневом сертификате Astra Linux

Обновлено: 03.07.2024

Часто встречающееся решение для ошибок PHP cURL с SSL – отключить CURLOPT_SSL_VERIFYPEER . Не отключайте CURLOPT_SSL_VERIFYPEER, а вместо этого исправьте конфигурацию PHP. В этой статье представлены два решения для устранения ошибок проверки сертификата ЦС с помощью PHP cURL и OpenSSL. Для системных администраторов и конечных пользователей.

Здесь вы узнаете, что нужно сделать, чтобы исправить конфигурацию PHP cURL.

Что вызывает ошибки CURLOPT_SSL_VERIFYPEER?

Внимание, спойлер: это вызвано отсутствием актуального пакета корневых сертификатов ЦС в вашей системе.

Не отключайте CURLOPT_SSL_VERIFYPEER в конфигурации PHP; исправить ошибки cURL, обновив пакет корневых сертификатов центра сертификации cURL и конфигурацию php.ini.

Вы часто видите, что PHP cURL выдает такие сообщения об ошибках, как:

подпрограммы:SSL3_GET_SERVER_CERTIFICATE: ошибка проверки сертификата

Проблема с SSL-сертификатом. Убедитесь, что с сертификатом ЦС все в порядке

В этом сообщении представлены два решения для исправления проверки ЦС с помощью PHP cURL и одно решение для OpenSSL. Для вас как системного администратора и конечных пользователей.

Падраик Брэди пишет:

Как видите, существует много дезинформации о том, как решить эту проблему с SSL-сертификатом, убедитесь, что сертификат ЦС в порядке, с помощью cURL.

Почти все советуют вам отключить CURLOPT_SSL_VERIFYPEER, и на самом деле бесчисленные комментарии на странице руководства PHP для curl_setopt советуют вам это сделать.

Это плохо, потому что позволяет злоумышленнику без лишнего шума похитить ваш хороший зашифрованный поток конфиденциальных данных. Итак, не делайте этого! Вместо этого исправьте конфигурацию PHP php.ini.

Что касается проблемы с сертификатом SSL, убедитесь, что ошибка CA cert is OK вызвана отсутствием актуального пакета корневых сертификатов CA, доступных для cURL, на вашем система. Не чужой.

Пакет корневых сертификатов ЦС обычно представляет собой обычный текстовый файл с криптографическими подписями. CURL использует это для проверки SSL- или TLS-сертификата хоста. Поэтому вам необходимо убедиться, что в вашей установке PHP есть один из этих файлов и что он обновлен.

Добавить пакет корневых сертификатов ЦС в php.ini

Как системный администратор:

Чтобы добавить пакет корневых сертификатов CA центра сертификации в файл php.ini, вам необходимо загрузить пакет корневых сертификатов CA cacert.pem с сайта curl.haxx.se.

Затем укажите путь к этому файлу в файле php.ini:

Это часто требуется только в Windows Server, а не в Linux.

Конечный пользователь, читайте дальше, чтобы узнать, как легко исправить проверку ЦС в cURL самостоятельно. Одной из ошибок, вызванных устаревшим или отсутствующим пакетом корневых сертификатов ЦС, является ошибка активации WordPress Jetpack.

Что такое сертификаты ЦС?

Что такое сертификаты ЦС?

Сертификаты ЦС основаны на доверии. Сертификаты центра сертификации (ЦС) — это сертификаты, выдаваемые ЦС самому себе или второму ЦС с целью создания определенных отношений между двумя ЦС. Сертификат, который ЦС выдает самому себе, называется доверенным корневым сертификатом, поскольку он предназначен для установления точки максимального доверия для иерархии ЦС.

После того как доверенный корень установлен, его можно использовать для авторизации подчиненных ЦС для выпуска сертификатов от его имени. Хотя отношения между ЦС чаще всего носят иерархический характер, сертификаты ЦС также используются для установления доверительных отношений между ЦС в двух разных иерархиях инфраструктуры открытых ключей (PKI).

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

Одним из часто сообщаемых сообщений об ошибке является активация плагина Jetpack в WordPress. Ошибка:

В качестве решения вы часто читали об отключении CURLOPT_SSL_VERIFYPEER. Ну не делай этого! На самом деле, никогда не делайте этого!

Сначала необходимо загрузить обновленный пакет корневых сертификатов ЦС.

Вот как исправить ошибку «Jetpack не удалось связаться с WordPress.com: register_http_request_failed. Обычно это означает, что что-то неправильно настроено на вашем веб-узле». всего за несколько шагов, и вы сможете подключить активацию плагина Jetpack:

  1. загрузите файл cacert.pem (http://curl.haxx.se/ca/cacert.pem) на свой компьютер
  2. загрузите cacert.pem на свой веб-сайт, желательно в недоступное для записи место (но доступное для чтения веб-серверу, просто для защиты файла)
  3. скачайте и откройте файл wp-includes/class-http.php
  4. где-то в строке 1084 внутри функции request() класса WP_Http_Curl<> добавьте:
    curl_setopt($handle, CURLOPT_CAINFO, "/path/to/domain/cacert.pem");
  5. сохраните и загрузите файл в папку wp-includes/

Jetpack теперь может подключаться к WordPress!

Файл PHP OpenSSL.ca, используйте sslverify = true

Не устанавливайте sslverify = false для wp_remote_get() в WordPress!

Пакет ЦС по умолчанию можно переопределить на глобальной основе, задав параметр конфигурации openssl.cafile или openssl.capath, или на основе каждого запроса с помощью параметров контекста cafile или capath.

Для OpenSSL вам также необходимо указать путь к файлу openssl.cafile в вашей установке PHP:

Как и в случае cURL curl.cainfo , это необходимо только в Windows Server.

Подсказка: вам интересно, как повысить производительность PHP с помощью WinCache и OPcache? Узнайте, как добавить SSL в WordPress.


Привет, меня зовут Ян. Я не хакер, кодер, разработчик или гуру. Я всего лишь системный администратор, выполняю свои повседневные дела в Vevida (часть Yourhosting) / CLDIN.

Я пытаюсь установить PKI в виртуальной тестовой среде в 2008 R2, и теперь я застрял, поэтому мне нужна ваша помощь и совет для дальнейших шагов. Я установил автономный корневой ЦС с ролью ЦС (позже он будет отключен, это стандарт 2008 R2). Также установлен один DC и один выдающий CA - подчиненный CA предприятия (на предприятии 2008 R2). При добавлении роли ЦС ent.subordinate я включил опцию сохранения сертификата запроса в файл.

В качестве руководства я использовал пошаговое руководство по службам сертификатов Active Directory Windows Server 2008 из

Дошло до того, что я отправил сертификат в автономный ROOT, ROOT его выдал, но когда я пытаюсь вернуть этот сертификат в подчиненный, я получаю следующую ошибку:

"Не удается найти сертификат для CN=ROOT-CA для создания цепочки сертификатов. Вы хотите установить этот сертификат сейчас? Цепочка сертификатов не может быть построена для доверенного корневого центра. 0x800b010a (-2146762486)."< /p>

Поэтому у меня проблемы с импортом выданного сертификата из CAROOT.

Кто-нибудь может предложить помощь?

Ответы

Это включает в себя пошаговые инструкции, которые вы ищете

<р>1. Запустите в корневом ЦС: certutil.exe -ca.cert rootcacert.crt

<р>2. скопируйте файл rootcacert.crt в подчиненный ЦС

<р>3. выполнить: certutil.exe -f -dspublish rootcacert.crt RootCA

Вы смешиваете две совершенно разные вещи.

1) Вам необходимо установить корневой сертификат ЦС. Вы можете использовать certutil -dspublish Rootcert.crt RootCA, а затем запустить gpupdate /force, чтобы добавить корневой сертификат CA в качестве доверенного корня. Я бы просто скопировал сертификат корневого ЦС из папки C:\windows\system32\certsrv\certenroll в корневом ЦС на USB и установил его оттуда на подчиненный.

2) Вы отправили запрос, сгенерированный в файле subCA (c:\CADNS_CAName.req), в корневой CA. Это делается в консоли центра сертификации. Результирующий запрос должен появиться в контейнере Ожидающие запросы. Затем необходимо щелкнуть запрос правой кнопкой мыши и выбрать Выпущено.

4) В субка, в консоли Центра сертификации, щелкните правой кнопкой мыши имя ЦС и установите сертификат. После этого вы сможете запустить службы сертификации

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

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

Что такое цепочка доверия SSL?

Давайте сначала разберемся, что такое Центр сертификации (ЦС). Центр сертификации (ЦС), также известный как Центр сертификации (ЦС), — это организация, которая выпускает цифровые сертификаты безопасности, например сертификаты SSL/TLS, и управляет ими. Эти центры сертификации (CA) являются доверенными сторонними объектами (такими как DigiCert, Comodo и т. д.), а их цифровые сертификаты, как правило, представляют собой файлы данных для проверки подлинности таких объектов, как компания, веб-сайт и т. д., надежно связанные с криптографические ключи, которые используются для безопасной связи в незащищенной сети, например, в Интернете. Таким образом, когда вы обсуждаете такие термины, как центры сертификации (ЦС), корневые и промежуточные сертификаты, а также то, как объединяются сертификаты SSL, вы имеете в виду концепцию, называемую «цепочка доверия SSL».

Обычно, когда вы получаете/покупаете сертификат SSL в центрах сертификации, они предоставляют вам специальный сертификат приложения для вашего веб-сайта вместе с промежуточным сертификатом. Веб-браузеры поддерживают список доверенных корневых сертификатов CA, которые предварительно устанавливаются и время от времени автоматически обновляются. Таким образом, когда веб-браузер загружает ваш SSL-сертификат, он сначала начинает связывать сертификат вашего приложения с промежуточным сертификатом. Затем он продолжает цепочку, пока не достигнет корневого сертификата доверенного ЦС. Таким образом, весь этот механизм формирует цепочку доверия SSL — упорядоченный список сертификатов, которые позволяют клиенту конечного пользователя, такому как веб-браузер, выступающий в роли получателя, удостоверить, что сервер веб-сайта, выступающий в роли отправителя, и ЦС заслуживают доверия.


Теперь давайте разберемся, почему возникает «Неполная цепочка SSL-сертификатов» или «Разорванная цепочка SSL».

Почему возникает предупреждение о неполной цепочке сертификатов?

Следующие причины появления предупреждений типа «Неполная цепочка SSL-сертификатов», «Разорванная цепочка SSL»:

При развертывании пользовательского SSL-сертификата с помощью платформы Cloudways вам необходимо добавить SSL-сертификат вашего веб-сайта вместе с промежуточным сертификатом (в некоторых случаях также требуется закрытый ключ). Таким образом, если вы пропустите установку промежуточного сертификата или загрузите неправильный сертификат, его нельзя будет связать обратно, и браузеры не будут доверять сертификату и могут генерировать разорванную цепочку или подобные предупреждения.

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

Как определить предупреждение о неполной цепочке сертификатов

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

Давайте посмотрим, как различные сторонние инструменты проверки SSL дают подсказки, когда цепочка SSL-сертификатов разорвана.

Qualys SSL Labs

Так Qualys SSL Labs предупреждает о нарушении цепочки сертификатов SSL.


Покупатель SSL

Так SSL Shopper предупреждает, когда цепочка сертификатов SSL разорвана.


Почему нет замка

Вот так почему No Padlock предупреждает, когда цепочка SSL-сертификатов разорвана.


Магазин Comodo SSL

Так Comodo SSL Store предупреждает, когда цепочка сертификатов SSL разорвана.


Как исправить предупреждение о неполной цепочке сертификатов

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

Прежде всего вам необходимо определить, владеете ли вы промежуточным сертификатом или нет. Когда вы покупаете сертификат SSL у любого поставщика SSL, они предоставляют вам сертификат вашего выделенного сервера/приложения в формате файла .crt или .cer (например, mydomain.crt/mydomain.cer) вместе с промежуточным сертификатом в .ca или . формат файла ca-bundle (например, mydomain.ca/mydomain.ca-bundle).

Создать промежуточный сертификат

Для создания промежуточного сертификата можно использовать любой сторонний инструмент, например What’s My Chain Cert. После посещения этого веб-сайта вам необходимо сначала вставить содержимое SSL-сертификата вашего приложения (файл .crt/.cer) и нажать «Создать цепочку», как показано на снимке экрана ниже.

Чтобы просмотреть и скопировать содержимое файла сертификата (файл .crt/.cer), вы можете использовать любой текстовый редактор, например Блокнот для Windows, TextEdit для Mac. Обратите внимание, что вам необходимо скопировать и вставить весь сертификат, включая строки —–BEGIN CERTIFICATE —– и —– END CERTIFICATE —–.


Загружаемый файл с вашим доменным именем будет доступен после нажатия кнопки «Создать цепочку». Загруженный файл будет вашим промежуточным сертификатом.


Теперь войдите на платформу Cloudways.После входа в систему перейдите на вкладку «Серверы» в верхней строке меню и выберите целевой сервер, на котором развернуто желаемое приложение/веб-сайт.


Далее нажмите www, расположенный справа от поля сервера.


Выберите целевое приложение из раскрывающегося списка.


В меню "Управление приложениями" выберите SSL-сертификат.


Здесь вы либо увидите параметр «Переустановить SSL», либо параметр «Установить сертификат».

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


Я вижу опцию «Установить сертификат»

Шаг (Ⅰ)

Нажмите «Установить сертификат», чтобы установить сертификат SSL и его промежуточный сертификат.


Шаг (Ⅱ)

Теперь появится диалоговое окно с запросом кода сертификата и цепочки ЦС.

Код сертификата относится к содержимому файла SSL-сертификата вашего приложения. Большинство поставщиков SSL обычно предоставляют это в формате файла .crt или .cer (например, mydomain.crt/mydomain.cer). Посмотреть снимок экрана.

Цепь ЦС относится к цепочке сертификатов (промежуточный сертификат). Обычно он предоставляется в формате файла .ca или .ca-bundle (например, mydomain.ca/mydomain.ca-bundle). Посмотреть снимок экрана.

Обратите внимание, что эти форматы файлов и стандарты могут различаться, учитывая, что существует множество поставщиков SSL-сертификатов с различными форматами и стандартами. Тем не менее, если вам нужна помощь, вы всегда можете связаться с нами через чат или создать заявку в службу поддержки.

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

Чтобы просмотреть и скопировать содержимое файла сертификата (файл .crt/.cer), вы можете использовать любой текстовый редактор, например Блокнот для Windows, TextEdit для Mac. Обратите внимание, что вам необходимо скопировать и вставить весь сертификат, включая строки —–BEGIN CERTIFICATE —– и —– END CERTIFICATE —–.



Перейдем к последнему этапу проверки SSL-сертификата, чтобы убедиться, что проблема решена.

Я вижу опцию «Переустановить SSL»

Шаг (Ⅰ)

Нажмите «Переустановить сертификат», чтобы установить сертификат SSL и его промежуточный сертификат.


Шаг (Ⅱ)

Теперь вам будет предложено ввести содержимое CRT и ключевое содержимое.

Здесь под содержимым CRT понимается содержимое файла SSL-сертификата вашего приложения. Большинство поставщиков SSL обычно предоставляют это в формате файла .crt или .cer (например, mydomain.crt/mydomain.cer). См. снимок экрана.

Вам также необходимо объединить цепочку ЦС, которая ссылается на цепочку сертификатов (промежуточный сертификат). Обычно он предоставляется в формате файла .ca или .ca-bundle (например, mydomain.ca/mydomain.ca-bundle). Посмотреть скриншот. Для конкатенации вы можете использовать любой текстовый редактор, например Блокнот для Windows, TextEdit для Mac. Посмотреть снимок экрана.

Для работы всех SSL-сертификатов требуется закрытый ключ. Закрытый ключ — это отдельный файл с расширением .KEY, который используется при шифровании/дешифровании данных, отправляемых между вашим сервером и подключающимися пользователями. Закрытый ключ создается владельцем сертификата, когда вы запрашиваете сертификат с помощью запроса на подпись сертификата (CSR).

Обратите внимание, что эти форматы файлов и стандарты могут различаться, учитывая, что существует множество поставщиков SSL-сертификатов с различными форматами и стандартами. Тем не менее, если вам нужна помощь, вы всегда можете связаться с нами через чат или создать заявку в службу поддержки.

Наконец, вставьте все необходимые данные и нажмите ОТПРАВИТЬ, чтобы развернуть сертификат с правильной цепочкой.

Чтобы просмотреть и скопировать содержимое файла сертификата (файл .crt/.cer), вы можете использовать любой текстовый редактор, например Блокнот для Windows, TextEdit для Mac.Обратите внимание, что вам необходимо скопировать и вставить весь сертификат, включая строки —–BEGIN CERTIFICATE —– и —– END CERTIFICATE —–.



Перейдем к последнему этапу проверки SSL-сертификата, чтобы убедиться, что проблема решена.

Как исправить предупреждение о неполной цепочке сертификатов

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

Вот оно! Мы надеемся, что эта статья была полезной. Если вам нужна помощь, не стесняйтесь искать свой запрос в Центре поддержки Cloudways или связаться с нами через чат (Нужна помощь > Отправить нам сообщение). Кроме того, вы также можете создать заявку в службу поддержки.

Сцепленная цепочка сертификатов кажется правильной, но проверка не удалась.

показывает цепочку сертификатов и пары "эмитент-субъект" правильно выстроены в цепочке, но:

Сертификат корневого ЦС не принимается openssl, хотя по умолчанию он находится в хранилище доверенных сертификатов сервера Ubuntu.

В частности: файл AddTrustExternalCARoot.crt, полученный по электронной почте от COMODO, и файл /etc/ssl/certs/AddTrust_External_Root.pem, ссылающийся на /usr/share/ca-certificates/mozilla/AddTrust_External_Root.crt, идентичны.

Что здесь не так?

На мой пост здесь повлияла проблема с Firefox. О, чувак, я устал. Итак, Thunderbird не жалуется на SMTPS, но Firefox не отображает HTML-страницу, и я предполагаю, что это сертификат, потому что при использовании openssl s_client отображается html страницы, а w3m также отображает страницу after жалуется на недоверенный сертификат. Но Firefox просто не показывает страницу, без предупреждения о сертификате.

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

Спасибо, ребята! Попробовал на другом компьютере, и теперь он работает как в Firefox, так и в Thunderbird. Это говорит о том, что ответ jotaps правильный. Хотя с openssl это еще более странно: openssl verify -CAfile chained.crt chained.crt проходит «ОК» (chained.crt — это связанный сертификат с сертификатом сервера, промежуточными сертификатами и корневым сертификатом CA)! Для меня это непоследовательное и странное поведение openssl. Цепочка сертификатов правильная, последний сертификат находится в хранилище доверенных сертификатов, и openssl распознает его и как отдельный сертификат, и как файл CA, но не последний в цепочке. Это ошибка?

3 ответа 3

ОБНОВЛЕНИЯ 2015/08/26: исправление было выпущено 2015/06/12 в версиях 1.0.1o и 1.0.2c. Кроме того, исследуя кое-что еще, я обнаружил, что с пакетами RedHat все в порядке. В частности, исходный RPM CentOS для openssl-1.0.1e-30.el6.11, который, как я понимаю, является копией RedHat (но не могу легко подтвердить), содержит openssl-1.0.1c-default-paths.patch, который содержит изменения в s_client.c s_server.c s_time.c от 06.12.2012, которые кажутся эквивалентными (хотя и не идентичными по тексту) исправлениям основной ветки от 12.06.2015. Предполагая, что этот патч был применен в пакетах RedHat и CentOS, которые я не могу легко проверить, они будут работать, как и ожидалось.

Спасибо. Это прояснило ситуацию, и действительно, на этот раз не я все испортил. в браузере и MUA цепочка принимается.

Читайте также: