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

Ubuntu16.04: Nginx 1.10: Nginx обслуживает несколько сертификатов. SSL отлично работает в браузере, но сталкивается с проблемой curl. Ошибка cURL 51

У меня есть несколько сайтов на сервере ubuntu (16.04) с nginx / 1.10.0 + letsencrypt.

SSL работает нормально и безупречно выглядит в браузере. Но наше приложение разработчиков, использующее запрос curl (с SSL), сталкивается с ошибкой как

Update Failed: Download failed. cURL error 51: SSL: certificate subject name 'domain2.com' does not match target host name 'domain1.com'

и после проверки с помощью SSLLABS он показал A_grade, но загружает несколько сертификатов (сертификат другого домена на том же сервере)

Certificate #1: RSA 2048 bits (SHA256withRSA)

и

Certificate #2: RSA 2048 bits (SHA256withRSA) No SNI

а под вторым сертификатом есть следующие ошибки.

Common names    domain2.com   MISMATCH
Trusted No   NOT TRUSTED

Ошибка завитка также говорила о втором доменном имени.

cURL error 51: SSL: certificate subject name 'domain2' does not match target host name 'domain1'

домен2 - это совершенно другой сайт. Не знаю, как nginx отправляет информацию вместе с domain1.

Также я протестировал тот же сценарий на других серверах, создав домен с Letsencrypt SSL, и у всех такая же проблема. при проверке с помощью SSLlabs ssllabs-checker он может получать сведения о сертификате domain2 вместе с domain1. По-прежнему уровень domain1 равен A. Также безопасен на всех других проверочных сайтах.

и если я проверяю домен 2 с помощью SSLlabs, он получит сертификат любого другого домена, который находится на том же сервере. (но если есть домены A, B, C, D, одна из проверок SSL доменов получит только один сертификат. Это не проблема, и все остальные будут иметь эту проблему.)

скриншот прилагается. (длинный скриншот всей страницы). Думаю прояснится по делу :(

Скриншот

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

Вышеупомянутая проблема относится к плагину Wordpress и поэтому не может добавить определенный параметр вместе с curl. (это из ядра WP)

Заранее спасибо.

В используемой версии curl отсутствует базовая SNI служба поддержки. SNI необходим, когда несколько доменов с SSL размещены на одном IP-адресе.

У вас есть три основных варианта:

  • обновите curl до версии, поддерживающей SNI.
    Поддержка этого была введено в версии 7.18.1.
  • сами добавьте параметр хоста на своих клиентах:
    -H "Host: domain1.com"
  • Переместите домен, чтобы использовать другой IP-адрес. Таким образом, никаких изменений на клиенте не требуется.