2012-06-18 43 views
10

Estoy tratando de obtener una página web a través del nodo https.request(). Al hacerlo, se produce un error al registrarse mi código. Con el módulo de solicitud nodo tiene el mismo resultado:SSL Error en nodejs

un problema en esta solicitud: 140398870042432: Error: 140773F2: Rutinas SSL: SSL23_GET_SERVER_HELLO: SSLv3 alerta de mensaje inesperado: s23_clnt.c: 658:

La siguiente indica que se está utilizando la versión incorrecta de SSL, pero no puedo encontrar la manera de cambiar la versión: curl error: "sslv3 alert unexpected message". El uso de curl desde mi terminal devuelve una respuesta como lo hace al pulsar la URL en mi navegador (es una página de inicio de sesión). Mi código está abajo.

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

¿Alguien tiene alguna idea de lo que podría estar pasando aquí?

+0

¿Podría mostrarnos el código exacto que está utilizando? Ayudaría si pudiéramos reproducir el problema. – Ashe

+0

Gracias Len, Este es mi código: solicitud var = require ('solicitud') request.GET ("https://icmserver.wit.ie/balance", función (err, res, cuerpo) { si (err) { \t retorno console.log (err) } cuerpo de retorno; }); Sigue registrando el error de SSL. – eshortie

+0

Observo que cuando accedo al sitio en Chrome, obtengo: "* La conexión tuvo que volverse a intentar con SSL 3.0. Esto generalmente significa que el servidor está usando un software muy antiguo y puede tener otros problemas de seguridad. *" Posiblemente Node's built -in SSL no es compatible con SSL 3. – Ashe

Respuesta

13

Intente utilizar options = { secureProtocol: 'SSLv3_method' } en la solicitud que está realizando.

+0

Gracias SuperShalabi que funcionó, la solicitud es la devolución de datos ahora! – eshortie

+0

Aclaración: la opción secureProtocol va en un nuevo https.Agent. –

+3

solo por aclaración, SSLv3 está roto, no debe usarlo. –

12

Nos encontramos con el mismo problema. Por defecto, request usa el https.globalAgent. Así que agregamos el código cerca de la parte superior de nuestro script.

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

De repente todo funcionó.

+0

No esperaba que esto funcionara, ya que hubiera pensado que requerir https en diferentes lugares no tendría, por lo tanto, el mismo GlobalAgent, pero, por desgracia, ha funcionado. ¡Gracias! – GotDibbs

+0

Recibí el error SSL23_GET_SERVER_HELLO: protocolo desconocido y busqué en Google mi dedo sangriento hasta que finalmente encontré esta solución. Esperemos que reindexe esto para que otros obtengan la información más rápidamente. –

+0

No sé por qué esta respuesta tiene más votos. Puede ser peligroso establecer el protocolo globalmente. Si la respuesta aceptada no funciona para usted, en lugar de establecer el protocolo globalmente, lea cuidadosamente el documento para ver cómo configurarlo: http://nodejs.org/api/https.html#https_https_request_options_callback – Sylvain