Я пытаюсь отправить запрос 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).