Я пытаюсь подключиться к внешней службе https REST на heroku со своего локального хоста со следующим кодом:
request(
{
url: config.get('host') +req.originalUrl,
method: req.method,
}, function (error, response, body) {
})
Я получаю следующую ошибку в обратном вызове:
Имя хоста / IP не соответствует альтернативным именам сертификата: "Хост: localhost. Не входит в альтернативные имена сертификата: DNS: _. Herokuapp.com, DNS: herokuapp.com "
Хост: localhost. отсутствует в альтернативных именах сертификата: DNS: _. herokuapp.com, DNS: herokuapp.com
если я подключаюсь к той же службе, установленной локально, все работает правильно, поэтому это должно быть связано с https.
Любая помощь?
Каков точный URL вашего запроса config.get('host') +req.originalUrl
?
Я тоже это получаю. Я использую самоподписанный сертификат и не хочу выполнять проверку имени хоста. У меня это в моих просьбах
agentOptions: {
ca: fs.readFileSync('ca.cert.pem')
}
Как установить ignoreHostname?
Вы пробовали установить для переменной rejectUnauthorized значение false?
`` `` `запрос ({
url: config.get ('host') + req.originalUrl,
метод: req.method,
rejectUnauthorized: false
},
function (error, response, body) {
})```
`` `` `
Было бы неплохо, если бы rejectUnauthorized: false
было где-нибудь на первой странице документации.
Разве rejectUnauthorized: false
заставляет вас принимать какие-либо сертификаты сервера? В таком случае я не считаю это верным решением.
Я хотел бы проверить сервер, убедившись, что сертификат подписан доверенным центром сертификации (в моем случае это мой собственный центр сертификации). Я не хочу заглушать все это и делать это небезопасным.
Это ужасно
Вы должны соответствовать сертификат сервера в CommonName
для клиента hostname
.
Вы должны сопоставить CommonName сертификата сервера с именем хоста клиента.
Почему так? Почему клиент заботится о собственном имени хоста, указанном в сертификате сервера? Речь идет об аутентификации сервера. Спасибо
К вашему сведению, у меня возникла эта ошибка, когда я пересылал запросы, я использовал request({host: 'something.com'... headers: req.headers...
То, что я сначала не понял, так это то, что в заголовках было host: 'localhost'
, которое было виновником. Я заменил его, и теперь он все в порядке.
Я считаю, что сталкиваюсь с той же проблемой. Я получаю следующую ошибку при использовании узла 6.10.3 и запроса 2.88:
Ошибка: имя хоста / IP не соответствует альтернативным именам сертификата: «Хост: https. Не входит в альтернативные имена сертификата:
Я отследил это до кода узла tls.js. Как-то "https". передается в качестве имени хоста запросом на узел. Если я установил для rejectUnauthorized значение false, мой код будет работать. Итак, я передаю правильное имя хоста в URL-адресе.
Я считаю, что это можно смягчить, используя ключ api, предоставленный целевым доменом.
К вашему сведению, у меня возникла эта ошибка, когда я пересылал запросы, я использовал
request({host: 'something.com'... headers: req.headers...
То, что я сначала не понял, так это то, что в заголовках былоhost: 'localhost'
, которое было виновником. Я заменил его, и теперь он все в порядке.
моя проблема решена. Я забыл изменить req.header и сменить хост.
Самый полезный комментарий
Это ужасно