web-dev-qa-db-fra.com

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

J'utilise le module node-request , j'envoie régulièrement des requêtes GET à un ensemble d'URL et, parfois, j'obtiens 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 toujours cette erreur ou toujours sur certaines URL, parfois seulement. De plus, il ne peut pas être ignoré avec "strictSSL: false".

J'ai lu que cela peut ê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.

Btw, je suis en train de lancer nodejs sur un serveur Windows 2008.

Toute aide est appréciée.

69
umutm

C'était totalement mon mauvais.

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

J'essayais simplement d'envoyer une demande http à https.

14
umutm

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

105
Gaf King

Certains sites parlent SSLv2, ou au moins envoient un bonjour serveur SSLv2, 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ûrs. Cependant, si vous devez leur parler, il vous suffit de l'activer de votre côté, si vous le pouvez. Je me plaindrais aux propriétaires du site si si vous le pouvez.

4
user207421

J'ai eu ce problème (erreur 403 pour chaque paquet) et je n'ai rien trouvé de génial sur Internet pour le résoudre . Mon fichier .npmrc dans 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
3
Flament Mickaël

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

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

dans mon cas (le site Web utilise les courbes ev) le problème avec SSL a été résolu en ajoutant cette option ecdhCurve: 'P-521: P-384: P-256'

request({ url, 
   agentOptions: { ecdhCurve: 'P-521:P-384:P-256', }
}, (err,res,body) => {
...

JFYI, peut-être que cela aidera quelqu'un

0
Denisix

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

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

0
Diaa Kasem

J'ai eu cette erreur, alors que je l'utilisais sur mon Rocket Chat pour communiquer avec mon gitlab via un proxy d'entreprise,

Parce que, utilisait le https: //: 8080 mais en réalité, cela fonctionnait pour http: //: 8080

0
MohanBabu

En bref, 

vi ~/.proxy_info

export http_proxy=<username>:<password>@<proxy>:8080
export https_proxy=<username>:<password>@<proxy>:8080

source ~/.proxy_info

J'espère que cela aide quelqu'un pressé :)

0
Prateek Mishra