Request: connexion au point de terminaison https et obtention : le nom d'hôte/l'adresse IP ne correspond pas aux noms alternatifs du certificat

Créé le 18 sept. 2015  ·  12Commentaires  ·  Source: request/request

J'essaie de me connecter à un service REST https externe sur heroku depuis mon hôte local avec le code suivant :

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

            })

J'obtiens l'erreur suivante dans le rappel :

Le nom d'hôte/IP ne correspond pas aux noms alternatifs du certificat : « Hôte : localhost. n'est pas dans les noms alternatifs du certificat : DNS:_.herokuapp.com, DNS:herokuapp.com "
Hôte : localhost. n'est pas dans les noms alternatifs du certificat : DNS:_.herokuapp.com, DNS:herokuapp.com

si je me connecte au même service installé localement, tout fonctionne correctement, il devrait donc être lié à https.

De l'aide?

Commentaire le plus utile

C'est horrible ce truc

Tous les 12 commentaires

Quelle est l'URL exacte de votre demande config.get('host') +req.originalUrl ?

Je reçois ça aussi. J'utilise un certificat auto-signé et je ne veux pas vérifier le nom d'hôte. j'ai ça dans mes demandes

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

Comment définissez-vous ignoreHostname ?

Avez-vous essayé de définir la variable unlockUnauthorized sur false ?

`````` requête ({
URL : config.get('hôte') +req.originalUrl,
méthode : req.method,
rejeterUnauthorized : faux
},
fonction (erreur, réponse, corps) {

        })```

``````

Ce serait bien si rejectUnauthorized: false figurait quelque part sur la première page de la documentation.

rejectUnauthorized: false ne vous fait-il pas accepter n'importe quel certificat de serveur ? Si tel est le cas, je ne considère pas que ce soit une solution valable.
Je voudrais vérifier le serveur en m'assurant que le certificat est signé par une autorité de certification de confiance (dans mon cas, il s'agit de ma propre autorité de certification). Je ne veux pas faire taire le tout et le rendre peu sûr.

C'est horrible ce truc

Vous devez faire correspondre la certification de serveur CommonName chez le client hostname .

Vous devez faire correspondre le CommonName de la certification du serveur au nom d'hôte du client.

Pourquoi est-ce le cas? Pourquoi le client se soucie-t-il de son propre nom d'hôte existant dans le certificat du serveur ? Il s'agit de l'authentification du serveur. Merci

Pour info, j'ai eu cette erreur pendant que je transférais des demandes, j'ai utilisé request({host: 'something.com'... headers: req.headers... Ce que je n'ai pas réalisé au début, c'est que dans les en-têtes il y avait host: 'localhost' , qui était le coupable. Je l'ai remplacé et maintenant il vérifie OK.

Je crois que je rencontre le même problème. J'obtiens l'erreur suivante lors de l'utilisation du nœud 6.10.3 et demande 2.88 :

Erreur : Le nom d'hôte/IP ne correspond pas aux noms alternatifs du certificat : « Hôte : https. n'est pas dans les noms alternatifs du certificat :

J'ai suivi cela jusqu'au code du nœud tls.js. D'une certaine manière, "https." est transmis en tant que nom d'hôte par demande au nœud. Si je mets unlockUnauthorized sur false, mon code fonctionne. Je passe donc le bon nom d'hôte dans l'url.

Je pense que cela peut être atténué en utilisant la clé API fournie par le domaine cible.

Pour info, j'ai eu cette erreur pendant que je transférais des demandes, j'ai utilisé request({host: 'something.com'... headers: req.headers... Ce que je n'ai pas réalisé au début, c'est que dans les en-têtes il y avait host: 'localhost' , qui était le coupable. Je l'ai remplacé et maintenant il vérifie OK.

mon problème résolu. J'ai oublié de modifier req.header et de changer d'hôte.

Cette page vous a été utile?
0 / 5 - 0 notes