2014-11-08 5 views
2

Amazon EC2에서 실행중인 Node.js 응용 프로그램에서 SSL 및 HTTPS를 사용하려고합니다. Name.com을 통해 RapidSSL 인증서를 구입하고 this StackOverflow answer의 지침에 따라 서버를 HTTPS에 맞게 올바르게 설정하십시오. 관련 코드는 다음과 같습니다.Node.js RapidSSL 인증서를 사용할 때 HTTPS 서버가 응답하지 않음

var http = require('http'), 
    https = require('https'); 
var express = require("express"), 
    app = express(); 
var fs = require('fs'); 

... 
app.set('certificate', fs.readFileSync('/path/to/cert.pem', 'utf8')); 
app.set('privateKey', fs.readFileSync('/path/to/privateKey.pem', 'utf8')); 
... 

http.createServer(app).listen(app.get('port'), function() { 
    console.info('Listening on port %d', app.get('port')); 
}); 
var options = {key: app.get('privateKey'), cert: app.get('certificate')}; 
https.createServer(options, app).listen(app.get('sslPort'), function() { 
    console.info('HTTPS listening on port %d', app.get('sslPort')); 
}); 

자체 서명 된 인증서로 로컬에서 서버를 실행할 때 보안 경고를 무시한 후에 모든 것이 정상적으로 작동합니다. 그러나 EC2 인스턴스에 코드를 배포하면 오류없이 프로그램이 실행되지만 HTTPS를 사용하여 도메인으로 이동할 때 서버에서 아무 것도 반환하지 않으며 브라우저가 시간 초과됩니다. HTTP로 사이트를 요청하는 것은 여전히 ​​정상적으로 작동합니다.

저는 이것을 Chrome뿐만 아니라 cURL에서도 시도했습니다. 인증서는 www 하위 도메인에 대해 발행되었지만 Name.com에 따르면 루트 도메인에서도 작동해야합니다. 하위 도메인과 루트 도메인 모두에서 사이트를 쿼리하여 동일한 결과를 얻으려고했습니다.

미리 도움을 청하십시오.

+0

나는 물건을 부러 뜨릴 것이라고 생각하지 않지만,'readfileSync' 호출에는'utf8'을 쓸 필요가 없습니다. – loganfsmyth

+0

EC2 서버에서 cert와 key가 지정된 위치에 있습니까? EB 서버의 경우 이는 문제 일 수 있습니다. –

답변

3

EC2 대시 보드의 보안 그룹에있는 포트 443에서 수신 트래픽을 허용하지 않았습니다. 0.0.0.0/0에서 허용하면 SSL이 작동합니다. 나는이 문제를 잠시 전에 풀었지만 그 질문을 잊어 버렸습니다. 그래서 여기에 다른 사람들을위한 답이 있습니다.

관련 문제