2017-04-03 1 views
1

도메인에 활성 SSL 인증서가있는 Node.js 서버가 있습니다. 나는이 웹 사이트의 일부 답변을 읽었으며, 이미 해결 된 이러한 질문에 대해서도 오류가 발생합니다.Node.js를 사용하여 http로 https를 리디렉션합니다.

var express = require('express'); 
var https = require('https'); 
var http = require('http'); 
var path = require('path'); 
var fs = require('fs'); 
var mysql = require('mysql'); 

var queue = {}; 
var qc = {}; 

var app = express(); 

var options = { 
    key: fs.readFileSync('sslcert/domain-name.key', 'utf8'), 
    cert: fs.readFileSync('sslcert/domain-name.csr', 'utf8') 
}; 

var httpServer = http.createServer(app); 
var httpsServer = https.createServer(options, app); 

/* various stuff to display my website */ 

httpServer.listen(process.env.PORT); 
httpsServer.listen(process.env.PORT); 

내 콘솔에서 다음과 같은 오류가 발생합니다.

_tls_common.js:67 
     c.context.setCert(options.cert); 
       ^

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Object.createSecureContext (_tls_common.js:67:17) 
    at Server (_tls_wrap.js:754:25) 
    at new Server (https.js:17:14) 
    at Object.exports.createServer (https.js:37:10) 
    at Object.<anonymous> (/srv/data/web/vhosts/default/server.js:35:25) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 

미리 답변 해 주셔서 감사합니다.

Noël.

+0

[OpenSSL : PEM 루틴 : PEM \ _read \ _bio : 시작 줄 없음 : pem \ _lib.c : 703 : Expecting : TRUSTED CERTIFICATE] 복제본 (http://stackoverflow.com/questions/20837161/openssl- pem-routinespem-read-biono-start-linepem-lib-c703expecting-truste) –

답변

1

cert은 도메인의 PEM 형식 인증서 여야하고 PEM 형식 중간 인증서가 있어야합니다. CSR이 아닙니다.

httpServer.listen(process.env.PORT); 
httpsServer.listen(process.env.PORT); 

그것은 작동하지 않을 수 있습니다을 : 당신이해야 할 노력하고있는 것처럼 같은 포트에 해당 서버를 모두 결합해서는 안 아난드 바트 노트로 대답 외에도

cert: fs.readFileSync('sslcert/domain-name.pem', 'utf8')

1

그러나 그것은 당신이 그것을 기대하는 방식이 아니기 때문에 작동 할 수도 있습니다. 원하는 경우 :

httpServer.listen(process.env.PORT_HTTP); 
httpsServer.listen(process.env.PORT_HTTPS); 

여기서 PORT_HTTP는입니다. 80이고 PORT_HTTPS는 예 : 443을 사용하면 어떤 서버가 어떤 요청을 처리 할 것인지 항상 알 수 있습니다.

관련 문제