Request: conectarse al punto final https y obtener: El nombre de host / IP no coincide con los nombres alternativos del certificado

Creado en 18 sept. 2015  ·  12Comentarios  ·  Fuente: request/request

Estoy tratando de conectarme a un servicio https REST externo en heroku desde mi localhost con el siguiente código:

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

            })

Recibo el siguiente error en la devolución de llamada:

El nombre de host / IP no coincide con los nombres alternativos del certificado: "Host: localhost. No está en los nombres alternativos del certificado: DNS: _. Herokuapp.com, DNS: herokuapp.com "
Anfitrión: localhost. no está en los nombres alternativos del certificado: DNS: _. herokuapp.com, DNS: herokuapp.com

si me conecto al mismo servicio instalado localmente todo funciona correctamente, por lo que debería estar relacionado con https.

¿Alguna ayuda?

Comentario más útil

Esto es horrible

Todos 12 comentarios

¿Cuál es la URL exacta de su solicitud config.get('host') +req.originalUrl ?

También estoy recibiendo esto. Estoy usando un certificado autofirmado y no quiero verificar el nombre de host. Tengo esto en mis peticiones

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

¿Cómo se configura ignoreHostname?

¿Ha intentado establecer la variable acceptUnauthorized en false?

`` `` `` request ({
url: config.get ('host') + req.originalUrl,
método: req.method,
rechazar Sin autorización: falso
},
función (error, respuesta, cuerpo) {

        })```

`` `` ``

Sería bueno si rejectUnauthorized: false estuviera en algún lugar de los documentos de la página principal.

¿ rejectUnauthorized: false hace aceptar ningún certificado de servidor? Si ese es el caso, no lo considero una solución válida.
Me gustaría verificar el servidor asegurándome de que el certificado esté firmado por una CA de confianza (en mi caso, es mi propia CA). No quiero silenciar todo el asunto y hacerlo inseguro.

Esto es horrible

Usted tiene que coincidir con la certificación del servidor CommonName a del cliente hostname .

Debe hacer coincidir el CommonName de la certificación del servidor con el nombre de host del cliente.

¿Por qué es ese el caso? ¿Por qué le importa al cliente que su propio nombre de host exista en el certificado del servidor? Se trata de la autenticación del servidor. Gracias

Para su información, recibí este error mientras reenviaba solicitudes, usé request({host: 'something.com'... headers: req.headers... Lo que no me di cuenta al principio fue que en los encabezados había host: 'localhost' , que era el culpable. Lo reemplacé y ahora verifica que está bien.

Creo que me estoy enfrentando al mismo problema. Recibo el siguiente error mientras uso el nodo 6.10.3 y solicito 2.88:

Error: el nombre de host / IP no coincide con los nombres alternativos del certificado: "Host: https. No está en los nombres alternativos del certificado:

Rastreé esto hasta el código del nodo tls.js. De alguna manera, "https". se pasa como el nombre de host por solicitud al nodo. Si configuro acceptUnauthorized en false, mi código funciona. Entonces estoy pasando el nombre de host correcto en la URL.

Creo que esto se puede mitigar utilizando la clave api proporcionada por el dominio de destino.

Para su información, recibí este error mientras reenviaba solicitudes, usé request({host: 'something.com'... headers: req.headers... Lo que no me di cuenta al principio fue que en los encabezados había host: 'localhost' , que era el culpable. Lo reemplacé y ahora verifica que está bien.

mi problema resuelto. He olvidado modificar req.header y cambiar de host.

¿Fue útil esta página
0 / 5 - 0 calificaciones