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

Ошибка сертификата ssl при выполнении запроса cURL на IP-адрес

Я пытаюсь отправить запрос cURL на сервер с IP-адресом x.x.x.x. Это часть системы мониторинга здоровья. На сервере я настроил виртуальные хосты для subdomain.example.com на портах 80 и 443. Для сертификата ssl я использую подстановочный сертификат * .example.com, который я использую на этом сервере, а также еще несколько серверов.

Когда я пытаюсь свернуться http://x.x.x.x он получит соответствующий ответ. Но когда я свернусь https://x.x.x.x он дает следующую ошибку сертификата:

curl: (51) SSL: имя субъекта сертификата '* .example.com' не соответствует имени целевого хоста 'x.x.x.x'

Я знаю, что это связано с тем, что сертификат специфичен для доменного имени, и я пытаюсь отправить запрос, используя IP-адрес. Но, как я уже сказал, это ограничение, которое у меня есть (мониторинг работоспособности балансировщика нагрузки в стойке).

Есть обходной путь ??

Вы можете использовать доменное имя как обычно, но переопределить преобразователь следующим образом:

curl -v --resolve subdomain.example.com:443:x.x.x.x https://subdomain.example.com/

Хотя может быть неудобно поддерживать много таких сопоставлений. Вы можете просто игнорировать несоответствие сертификатов:

curl --insecure https://subdomain.example.com/

ЕСЛИ вы хотите, вы можете использовать --insecure --verbose и проанализируйте сообщения, чтобы убедиться, что сертификат предназначен для ожидаемого домена, но это, вероятно, больше работы, чем использование --resolve

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

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

Конечный пользователь отправляет HTTPS-запрос к балансировщику нагрузки. Балансировщик нагрузки разворачивает SSL и пересылает запрос через незашифрованный HTTP на веб-сервер с заголовком, который сообщает веб-серверу, что исходный запрос был зашифрован. (важно для встраивания URL-адресов в ответ и для предотвращения передачи защищенного содержимого через http).