2012-06-18 7 views
10

노드 https.request()를 통해 웹 페이지를 가져 오려고합니다. 그렇게하면 내 코드로 기록되는 데 오류가 발생합니다. 다음nodejs의 SSL 오류

: 658 : 요청에

문제 : 140398870042432 : 오류 : 140773F2 : SSL 루틴 : SSL23_GET_SERVER_HELLO : SSLv3에 경고 예상치 못한 메시지 : s23_clnt.c 노드 요청 모듈을 사용하면 같은 결과가 잘못된 SSL 버전이 사용되고 있음을 나타내지 만 버전을 변경하는 방법을 찾을 수 없습니다 : curl error: "sslv3 alert unexpected message". 터미널에서 컬을 사용하면 브라우저에서 URL을 누르는 것과 마찬가지로 응답을 반환합니다 (로그인 페이지 임). 내 코드는 아래와 같습니다.

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

여기에 무슨 일이 일어날 지 아무도 모르는 사람이 있습니까?

+0

사용중인 코드를 정확하게 표시해 주시겠습니까? 문제를 재현 할 수 있다면 도움이 될 것입니다. – Ashe

+0

감사 렌, 이 내 코드입니다 : VAR 요청 = ('요청') request.get을 필요로 ("https://icmserver.wit.ie/balance" 기능 (ERR, 입술, 바디) { if (err) { \t return console.log (오류) } 반송 체; }); SSL 오류를 계속 기록합니다. – eshortie

+0

Chrome에서 사이트에 액세스 할 때 다음과 같은 메시지가 나타납니다. "* SSL 3.0을 사용하여 연결을 재 시도해야했는데 이는 일반적으로 서버가 매우 오래된 소프트웨어를 사용하고 있으며 다른 보안 문제가있을 수 있음을 의미합니다. SSL에서 SSL 3을 지원하지 않습니다. – Ashe

답변

13

요청하시는 중 options = { secureProtocol: 'SSLv3_method' }을 사용해보세요.

+0

감사합니다 SuperShalabi가 작동했습니다. 요청이 지금 데이터를 반환하고 있습니다! – eshortie

+0

설명 : secureProtocol 옵션이 새로운 https.Agent에 포함됩니다. –

+3

설명을 위해 SSLv3이 손상되었으므로 사용해서는 안됩니다. –

12

같은 문제가 발생했습니다. 기본적으로 요청은 https.globalAgent를 사용합니다. 그래서 우리는 스크립트 상단에 코드를 추가했습니다.

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

모든 것이 갑자기 이루어졌습니다.

+0

다른 곳에서 https가 필요하므로 동일한 globalAgent를 갖지 않을 것이라고 생각 했으므로이 기능이 작동하지 않을 것입니다.하지만 아쉽게도 작동했습니다. 감사! – GotDibbs

+0

나는 SSL23_GET_SERVER_HELLO : 알 수없는 프로토콜을 가지고있어 마침내이 해결책을 찾을 때까지 내 손가락이 피가 흘렀다. 바라건대 이것을 다시 색인하여 다른 사람들이 정보를 더 빨리 얻을 수 있도록하십시오. –

+0

이 답변에 더 많은 투표가있는 이유를 알 수 없습니다. 프로토콜을 전체적으로 설정하는 것은 위험 할 수 있습니다. 프로토콜을 전체적으로 설정하는 대신 승인 된 응답이 작동하지 않는 경우 doc을 자세히 읽어 설정 방법을 확인하십시오. http://nodejs.org/api/https.html#https_https_request_options_callback – Sylvain