2012-06-18 27 views
10

Düğüm https.request() yoluyla bir web sayfası almaya çalışıyorum. Bunu yapmak, kodum tarafından kaydedilmemde bir hatayla sonuçlanır. AşağıdakiSSL Hata Nodejs

: 658: İsteğe

sorunu: 140398870042432: Hata: 140773F2: SSL rutinleri: SSL23_GET_SERVER_HELLO: SSLv3 uyarısı beklenmedik mesaj: s23_clnt.c düğüm isteği modülünü kullanarak aynı sonucu yanlış SSL sürümünün kullanıldığını gösterir, ancak sürümü değiştirmenin bir yolunu bulamıyorum: curl error: "sslv3 alert unexpected message". Terminalimden curl kullanmak, tarayıcımdaki URL’ye isabet ettiğinde yanıt verir (bir giriş sayfasıdır). Kodum aşağıda.

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

Burada neler olabileceği hakkında bir fikri olan var mı?

+0

Kullanmakta olduğunuz kodu bize gösterir misiniz? Sorunu yeniden üretebilirsek yardımcı olur. – Ashe

+0

Teşekkür Len Bu benim kodudur: var isteği = ('isteği') request.get gerektiren ("https://icmserver.wit.ie/balance", fonksiyonu (err, res, gövde) { halinde (err) { \t dönüş console.log (eRR) } dönüş gövdesi; }); SSL hatasını günlüğe kaydetmeye devam ediyor. – eshortie

+0

Chrome’da siteye eriştiğimde şunu görüyorum: "* SSL 3.0 kullanılarak bağlantı yeniden denenmelidir. Bu, genellikle sunucunun çok eski bir yazılım kullandığı ve başka güvenlik sorunları yaşayabileceği anlamına gelir." "Muhtemelen Düğümün yerleşik olması SSL SSL 3'ü desteklemiyor. – Ashe

cevap

13

Yaptığınız istekte options = { secureProtocol: 'SSLv3_method' } kullanmayı deneyin.

+0

Çalıştığınız SuperShalabi teşekkürler, istek şu anda veri döndürüyor! – eshortie

+0

Açıklama: secureProtocol seçeneği yeni bir https.Agent olarak gider. –

+3

sadece açıklama için, SSLv3 bozuk, onu kullanmamalısınız. –

12

Aynı soruna girdik. Varsayılan olarak, istek https.globalAgent kullanır. Bu yüzden kodu, komut dosyamızın en üstüne ekledik.

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

Her şey işe yaradı.

+0

Bunu çalışmak için beklemiyordum, çünkü farklı yerlerde https gerektiğini düşündüğümden, aynı globalAgent'e sahip olmayacaktı, ama işe yaradı. Teşekkürler! – GotDibbs

+0

SSL23_GET_SERVER_HELLO: bilinmeyen protokol hatası aldım ve sonunda bu çözümü bulduğum kadar parmağım kanlı googled. Umarım diğerleri bu bilgiyi daha çabuk alsın diye umuyorum. –

+0

Bu cevabın neden daha fazla oy aldığını bilmiyorum. Protokolü global olarak ayarlamak tehlikeli olabilir. Kabul edilen cevap sizin için işe yaramazsa, protokolü global olarak ayarlamak yerine, nasıl kurulacağını öğrenmek için lütfen dokümanı dikkatle okuyun: http://nodejs.org/api/https.html#https_https_request_options_callback – Sylvain