Question node-request - Obtention de l'erreur "SSL23_GET_SERVER_HELLO: protocole inconnu"


J'utilise le demande de noeud module, en envoyant régulièrement des requêtes GET à un ensemble d'URL et, parfois, en obtenant l'erreur ci-dessous sur certains sites.

Error: 29472:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:683

Le problème est que je ne reçois pas cette erreur toujours ou toujours sur certaines URL, parfois même. En outre, il ne peut pas être ignoré avec "strictSSL: false".

J'ai lu que cela pouvait être lié à l'envoi de requêtes SSL avec le mauvais protocole (SSLv2, SSLv3, TLS ..). Mais cela n'explique pas pourquoi cela se produit de manière irrégulière.

En passant, je lance nodejs sur un serveur Win 2008.

Toute aide est appréciée.


61
2018-03-14 22:02


origine


Réponses:


Vous obtiendrez un tel message d'erreur lorsque vous demandez une ressource HTTPS via un mauvais port, tel que 80. Assurez-vous donc que vous avez spécifié le bon port, 443, dans les options de demande.


100
2017-08-09 08:32



C'était totalement mon mauvais.

J'utilisais le noeud standard http.request sur une partie du code qui devrait envoyer des requêtes uniquement aux adresses http. Il semblerait que la base de données contienne une seule adresse https qui a été interrogée avec un intervalle aléatoire.

Simplement, j'essayais d'envoyer une requête http à https.


12
2018-04-22 13:23



Certains sites parlent SSLv2, ou au moins envoient un serveur SSL-hello, et votre client ne parle pas ou n'est pas configuré pour parler SSLv2. Vous devez prendre une décision politique ici. SSLv2 aurait dû disparaître de la surface de la Terre il y a des années et les sites qui l'utilisent encore ne sont pas sécurisés. Cependant, si vous devez leur parler, il vous suffit de l'activer à votre fin, si vous le pouvez. Je me plaindrais aux propriétaires du site si vous le pouvez.


4
2018-03-14 22:09



var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';

2
2018-01-10 03:31



J'ai eu cette erreur parce que j'utilisais require('https') où j'aurais dû utiliser require('http').


2
2017-08-19 15:01



J'ai eu ce problème (erreur 403 pour chaque paquet) et je n'ai rien trouvé de bon sur Internet pour le résoudre. ma .npmrc fichier à l'intérieur de mon dossier utilisateur était incorrect et mal compris. J'ai changé cette ligne npmrc de

proxy=http://XX.XX.XXX.XXX:XXX/

à :

proxy = XX.XX.XXX.XXX:XXXX

1
2018-01-17 16:37



J'ai eu cette erreur lors de la connexion à Amazon RDS. J'ai vérifié l'état du serveur 50% de l'utilisation du processeur alors qu'il s'agissait d'un serveur de développement et que personne ne l'utilisait.

Cela fonctionnait auparavant, et rien dans la configuration de la connexion n'a été modifié. Le redémarrage du serveur a résolu le problème pour moi.


0
2018-02-24 14:26



Il semble que vous ayez simplement besoin de logique de réessai afin que les erreurs intermittentes ne vous raccrochent pas.

function faultTolerantRequest (url, trys, retryTime, cb) {
  var attempts = 0;
  function requestFinished (err, res, body) {
    if (err) {
      if (attempts < trys) {
        return setTimeout(tryRequest, retryTime);
      }
      return cb(err);
    }
    return cb(err, res, body);
  }
  function tryRequest () {
    attempts++;
    return request(url, requestFinished);
  }
  return tryRequest();
}

-3
2018-03-15 19:53