2016-08-05 2 views
1

node.js 응용 프로그램에서 HTTPS를 가져 오려고합니다. 0 made progress on thiscertAccess 그룹에 rootec2-user이 모두 포함 된 그룹을 만든 다음 sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key이라고 말하면됩니다. 나는이 더미 코드 실행할 때, :Node.js와 함께 보낸 내용 암호화

var fs = require('fs'); 
var https = require('https'); 
var app = require('express')(); 
var options = { 
    key : fs.readFileSync('/etc/pki/tls/private/serverKey.key').toString(), 
    cert : fs.readFileSync('/etc/pki/tls/certs/2_mikewarren.me.crt').toString() 
}; 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

https.createServer(options, app).listen(8080, function() { 
    console.log(JSON.stringify(options, null, '\t')); 
    console.log('Started!'); 
}); 

및 브라우저 (사용 <yourDomain>:8080)에 그것을 테스트, 나는 서버에서 응답을 얻을.

내가 가서 내 개인 키와 인증서의 사용 권한을보고, 이것을 참조 : 그러나 enter image description here

:

Permissions for key,certificate

/etc/httpd/conf.d/ssl.conf에 위치한 개인 키와 인증서의 구성은 같다 , 내가 브라우저에서 테스트를 할 때 (URL 앞에 https://을 입력하는 경우조차도 안됨) 서버에서 응답을받지 못합니다.

어떻게해야합니까?!?!?

+0

이것이 문제의 원인인지는 모르겠지만 소지품. 1) : 8080을 사용할 수 없습니다. https : // yourdomain.com : 8080과 같이'https'를 포함시켜야합니다. 그리고, 2)'.toString()'을'readFileSync()'두 호출 후에 제거하십시오. 인증서는 문자열이 아닙니다. – jfriend00

+0

아니요. 일하지 않았어. 마치 서버가 꺼져있는 것처럼 콘텐츠를 요청합니다. –

+0

예. 그것들은 유효한 수정 사항입니다. 당신은 명백하게 더 많은 것을 잘못한 것처럼 보입니다. 분명히 어딘가에서 오류가 발생했습니다. 연결이 이루어지지 않은 이유를 확인하기 위해 서버와 클라이언트 모두에서 어떤 일이 일어나는지 정확히 알기 위해 디버깅을해야 할 것입니다. 나는 일어나고있는 것을 우리가 알기에 당신의 질문에 충분한 내용이 없다고 생각합니다. – jfriend00

답변

0

나는 해결책을 찾았다. 내가 한 일은 다음과 같습니다.

options에 회원을 추가하고 그 체인 인증서에 다음과 같이 설명했습니다 : ca : fs.readFileSync('/etc/pki/tls/certs/1_root_bundle.crt', 'utf8'). 그것은 cert 문제를 해결합니다. 다음 부분에 관해서는, BASH에 https (포트 443)를 내가 사용하고있는 포트로 리다이렉트하는 라인을 썼다. (편의상 8443으로 바꿨다. 왜냐하면 이미 http를 8080로 리디렉션했기 때문이다.)

그래도 작동하지만 여전히 URL 앞에 https://을 붙이면 안됩니다. 나는해서는 안된다! 그 해결책은 이미 해왔 던 일을하는 것이지만 포트 8443이나 프록시 포트 8080을 포트 8443으로 리디렉션하는 것입니다.

관련 문제