2012-06-18 26 views
10

Sto cercando di ottenere una pagina Web tramite il nodo https.request(). Ciò comporta un errore nel registrare il mio codice. Utilizzando il modulo di richiesta di nodo ha lo stesso risultato:Errore SSL in nodejs

problema con la richiesta: 140.398.870.042.432: errore: 140773F2: routine SSL: SSL23_GET_SERVER_HELLO: SSLv3 avviso messaggio inatteso: s23_clnt.c: 658:

Il seguente indica che è stata utilizzata la versione SSL errata, ma non riesco a trovare un modo per modificare la versione: curl error: "sslv3 alert unexpected message". L'uso di curl dal mio terminale restituisce una risposta così come colpisce l'URL nel mio browser (è una pagina di accesso). Il mio codice è sotto

var request = require('request') 
request.get("https://icmserver.wit.ie/balance", function(err, res, body) { 
    if (err) { 
     return console.log(err) 
    } 
    return body; 
}); 

Qualcuno ha idea di cosa potrebbe accadere qui?

+0

Puoi mostrarci il codice esatto che stai utilizzando? Sarebbe utile se potessimo riprodurre il problema. – Ashe

+0

Grazie Len, Questo è il mio codice: richiesta var = require ('richiesta') request.get ("https://icmserver.wit.ie/balance", la funzione (err, res, il corpo) { se (err) { \t ritorno console.log (err) } corpo ritorno; }); Continua a registrare l'errore SSL. – eshortie

+0

Ho notato che quando accedo al sito in Chrome, ottengo: "* La connessione doveva essere ritentata utilizzando SSL 3.0 Ciò significa che il server sta utilizzando un software molto vecchio e potrebbe avere altri problemi di sicurezza. -in SSL non supporta SSL 3. – Ashe

risposta

13

Prova a utilizzare options = { secureProtocol: 'SSLv3_method' } nella richiesta che stai facendo.

+0

Grazie a SuperShalabi che ha funzionato, la richiesta sta restituendo i dati ora! – eshortie

+0

Chiarimento: l'opzione secureProtocol va in un nuovo https.Agent. –

+3

solo per chiarimenti, SSLv3 è rotto, non devi usarlo. –

12

Abbiamo raggiunto lo stesso problema. Per impostazione predefinita, la richiesta utilizza https.globalAgent. Quindi abbiamo aggiunto il codice vicino alla parte superiore del nostro script.

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

All'improvviso tutto ha funzionato.

+0

Non mi sarei aspettato che funzionasse come avrei pensato che richiedere https in posti diversi non avrebbe quindi lo stesso globalAgent, ma purtroppo ha funzionato. Grazie! – GotDibbs

+0

Ho ricevuto l'errore SSL23_GET_SERVER_HELLO: protocollo sconosciuto e ho cercato con google il dito fino a quando non ho finalmente trovato questa soluzione. Speriamo di reindirizzare questo in modo che altri ottengano le informazioni più rapidamente. –

+0

Non so perché questa risposta ha più voti. Può essere pericoloso impostare il protocollo a livello globale. Se la risposta accettata non funziona per te, piuttosto che impostare il protocollo a livello globale, leggi attentamente il documento per vedere come impostarlo: http://nodejs.org/api/https.html#https_https_request_options_callback – Sylvain