Request: conectando-se ao endpoint https e obtendo: Nome do host / IP não corresponde aos nomes alternativos do certificado

Criado em 18 set. 2015  ·  12Comentários  ·  Fonte: request/request

Estou tentando me conectar a um serviço https REST externo no heroku de meu localhost com o seguinte código:

request(
            {
                url: config.get('host') +req.originalUrl,
                method: req.method,
            }, function (error, response, body) {

            })

Recebo o seguinte erro no retorno de chamada:

O nome do host / IP não corresponde aos nomes alternativos do certificado: "Host: localhost. Não está nos nomes alternativos do certificado: DNS: _. Herokuapp.com, DNS: herokuapp.com "
Host: localhost. não está nos nomes alternativos do certificado: DNS: _. herokuapp.com, DNS: herokuapp.com

se eu me conectar ao mesmo serviço instalado localmente tudo funciona corretamente, por isso deve estar relacionado com https.

Qualquer ajuda?

Comentários muito úteis

Essa coisa é horrível

Todos 12 comentários

Qual é o URL exato da sua solicitação config.get('host') +req.originalUrl ?

Eu também estou entendendo isso. Estou usando um certificado autoassinado e não quero fazer a verificação do nome do host. Eu tenho isso em meus pedidos

agentOptions: {
        ca: fs.readFileSync('ca.cert.pem')
    }

Como você define ignoreHostname?

Você já tentou definir a variável rejeitarUnauthorized como falsa?

pedido `` `` `` ({
url: config.get ('host') + req.originalUrl,
método: req.method,
rejeitarUnauthorized: false
},
função (erro, resposta, corpo) {

        })```

`` `` ``

Seria bom se rejectUnauthorized: false estivesse na primeira página dos documentos em algum lugar.

rejectUnauthorized: false faz você aceitar nenhum certificado de servidor? Se for esse o caso, não considero uma solução válida.
Gostaria de verificar o servidor certificando-me de que o certificado é assinado por uma CA confiável (no meu caso, é a minha própria CA). Não quero silenciar tudo e torná-lo inseguro.

Essa coisa é horrível

Você tem que combinar de certificação do servidor CommonName a do cliente hostname .

Você deve combinar o CommonName da certificação do servidor com o nome do host do cliente.

Por que é esse o caso? Por que o cliente se preocupa com seu próprio nome de host existente no certificado do servidor? Trata-se da autenticação do servidor. Obrigado

Para sua informação, recebi este erro enquanto estava encaminhando solicitações. Usei request({host: 'something.com'... headers: req.headers... O que não percebi a princípio foi que nos cabeçalhos havia host: 'localhost' , que era o culpado. Eu o substituí e agora ele verifica se está OK.

Eu acredito que estou encontrando o mesmo problema. Recebo o seguinte erro ao usar o nó 6.10.3 e solicitar 2.88:

Erro: o nome do host / IP não corresponde aos nomes alternativos do certificado: "Host: https. Não está nos nomes alternativos do certificado:

Rastreei isso até o código do node tls.js. De alguma forma, "https." está sendo passado como o nome do host por solicitação para o nó. Se eu definir rejeitarUnauthorized como falso, meu código funcionará. Portanto, estou passando o nome de host correto na url.

Acredito que isso pode ser atenuado usando a chave de API fornecida pelo domínio de destino.

Para sua informação, recebi este erro enquanto estava encaminhando solicitações. Usei request({host: 'something.com'... headers: req.headers... O que não percebi a princípio foi que nos cabeçalhos havia host: 'localhost' , que era o culpado. Eu o substituí e agora ele verifica se está OK.

meu problema resolvido. esqueci de modificar req.header e alterar host.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

ghost picture ghost  ·  3Comentários

xin7c picture xin7c  ·  3Comentários

jasonxia23 picture jasonxia23  ·  3Comentários

codecowboy picture codecowboy  ·  3Comentários

chenby picture chenby  ·  3Comentários