Как устранить ошибку "имя субъекта сертификата не соответствует имени целевого хоста"?

  curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 90d2c018-73d1-324b-b121-a162cf870ac0' 'https://172.17.0.1:8243/V1.0.2/stock/getNA?name=te'

Терминал подсказал

"curl: (51) SSL: имя субъекта сертификата (localhost) не соответствует имени целевого хоста '172.17.0.1' "

Однако после того, как я изменил "172.17.0.1" на "localhost", он заработал и получил результат.

Зачем? Нет ли где-то неправильной конфигурации? Между тем, в http_access.log нет лога.

5 ответов

Когда произойдет рукопожатие ssl, клиент проверит сертификат сервера. В процессе проверки клиент будет пытаться сопоставить общее имя (CN) сертификата с именем домена в URL. если оба они разные, проверка имени хоста не удастся. В вашем случае сертификат имеет CN в качестве локального хоста, и когда вы пытаетесь вызвать с использованием IP-адреса, он терпит неудачу. При создании сертификата в качестве значения CN можно указать одно имя хоста / несколько хостов / подстановочное имя хоста.

Для получения дополнительной информации https://tersesystems.com/2014/03/23/fixing-hostname-verification/ https://support.dnsimple.com/articles/what-is-common-name/

CN по умолчанию сертификат wso2 localhost, Поэтому вы должны использовать localhost в качестве имени хоста при отправке запросов. В противном случае проверка имени хоста завершится неудачно. Если вы хотите использовать любое другое имя хоста, вы должны сгенерировать сертификат с этим именем хоста, как упоминала Йена.

Это может быть давным-давно. Но у меня действительно была эта проблема, и я получил решение. Надеюсь, это кому-нибудь поможет

Я запрашивал URI, например " http://some.example/ ", но переменная для HTTPS была установлена ​​в "1"

У меня возникла эта проблема при попытке извлечь из каталога git после добавления нового ключа SSH и перемещения моего git-репозитория. В схватке Git CN запутался. Решением для меня было удалить каталог git и повторно клонировать его через ssh. Как намекали другие пользователи, вы не можете изменить CN сертификата веб-сайта, поэтому вам придется изменить настройку на вашем компьютере с неправильным CN или избегать использования https (и использовать ssh, как я).

Как намекали другие, это не удается, потому что согласование TLS проверяет, соответствует ли сертификат имени хоста в URL-адресе.

Что нового, так это то, что curl теперь поддерживает этот сценарий через опцию подключения .Итак, если ваш curl достаточно новый (v7.18.1), это должно работать:

      curl -X GET 'https://localhost/V1.0.2/stock/getNA?name=te' \
    --header 'Authorization: Bearer 90d2c018-73d1-324b-b121-a162cf870ac0' \
    --header 'Accept: application/json'  \
    --connect-to localhost:443:172.17.0.1:8243 

Кредит: /questions/12341317/curl-kak-ukazat-tselevoe-imya-hosta-dlya-zaprosa-https/12341327#12341327

Точно так же вы можете использовать опцию разрешения завитков:

      curl -X GET 'https://localhost:8243/V1.0.2/stock/getNA?name=te' \
    --header 'Authorization: Bearer 90d2c018-73d1-324b-b121-a162cf870ac0' \
    --header 'Accept: application/json'  \
    --resolve localhost:443:172.17.0.1
Другие вопросы по тегам