2012-11-10 8 views
4

openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr을 사용하여 server.key 및 server.csr 파일을 만들었습니다. 내가 인증서 파일을 준 startssl.com으로 SSL 인증서를 만들었습니다. 그럼 내 Node.js를 응용 프로그램에서 나는 키와 인증서 파일을 읽을 : 지금은 내 응용 프로그램에서 빈 응답을,Node.js HTTPS 서버 ERR_EMPTY_RESPONSE

var app = module.exports = express.createServer({ 
    key: fs.readFileSync('server.key'), 
    cert: fs.readFileSync('server.cert') 
}); 

을하지만, 메시지를 "수신 된 데이터가 없습니다." 무엇이 이것을 일으킬 수 있습니까? 저는 SSL에 대해 매우 익숙하며 어떻게 작동하는지 알기 때문에 이에 대한 어떠한 도움도 매우 감사하겠습니다.

추가 정보 : 내 VPS 서버 (프로덕션 서버)에서 두 파일, 키 및 csr 파일을 생성 했으므로 이제는 내 로컬 호스트에서 작업하도록하고 있습니다 (첫 번째로, 생산, 나는 자식이 커밋하기 전에 작동하는지 테스트해야합니다). 따라서 로컬 호스트 (개발 환경)가 VPS 서버 (프로덕션 환경)와 다른 도메인에 있기 때문일 수 있습니다. 이것이 사실 일 수 있습니까? 그렇다면 localhost와 프로덕션 환경에서 동일한 인증서를 사용하는 위치를 어떻게 만들 수 있습니까?

또는 개발 환경에 대한 다른 인증서를 만들 것을 제안 하시겠습니까? 필자가 볼 수있는 유일한 문제는 로컬로 완료 되었기 때문에 내 개발 환경을위한 도메인이 없다는 것입니다. 간단하게하기 위해 같은 인증서를 사용하고 싶습니다. (깨진 자물쇠 아이콘이나 로컬 호스트상의 무언가를 의미한다고하더라도).

답변

2

curl --insecure --verbose으로 애플리케이션에 연결하여 오류를 해결할 수 있습니다. 일반적으로 둘 이상의 호스트에서 SSL 인증서를 사용하면 안됩니다. 자체 서명 된 인증서를 만들어 로컬에서 테스트하고 생산 과정에서 startssl을 사용할 수 있습니다. 그러나 어떤 경우에도 인증서의 CN은 성가신 브라우저 경고를 피하기 위해 사이트에 연결하는 데 사용 된 호스트 이름과 일치해야합니다. sam.local과 같이 컴퓨터의 도메인 이름을 항상 만들어서/etc/hosts 파일에 넣고 브라우저 주소 표시 줄과 함께 자체 서명 된 인증서에서 사용할 수 있습니다.

+0

그래, 이건 내가 내 연구를 통해 알아 낸 것 일세. 귀하의 답변 주셔서 감사합니다! :) 그러나 자체 서명 된 인증서는 CA가 없거나 CA가 필요하지 않거나 로컬 시스템이 될 것입니다. 로컬 시스템이라면 어떻게 로컬 브라우저를 로컬 시스템으로 인식 할 수 있습니까? 캘리포니아? – Sam

+0

자체 서명 된 인증서는 CA를 갖지만, 생성 한 인증서 일 뿐이며 브라우저는 인식 할 수있는 CA 묶음을 가지고 있습니다. 생성 된 CA 인증서를 브라우저로 가져 와서 보안 경고를 제거 할 수 있습니다. –

+0

대단히 고마워! – Sam

15

나는 이것이 오래된 질문이라는 것을 알고 있지만, 나는 오늘도 똑같은 것을 경험했다. 익스프레스 (ERR_EMPTY_RESPONSE)에서 같은 결과를 얻을 수 있습니다.

수정 사항? 테스트 브라우저에서 http이 아닌 https을 지정해야합니다 (예 : https://localhost:8443).

이전에 미들웨어를 사용하여 모든 HTTP 요청을 https로 전달했다면 이전에는이 ​​문제를 보지 못했을 것입니다. 또한 브라우저가 인증서에 대해 불평하지만 어쨌든 (크롬에서는 몇 번의 클릭만으로) 처리 할 것을 기대하십시오.

+2

감사! 이건 내게 고쳐 줬어. –