2017-04-03 16 views
1

ドメインにアクティブなSSL証明書を持つNode.jsサーバーがあります。 私はこのウェブサイトでこれについていくつかの回答を読んだことがありますが、まだ解決済みの質問に関連していてもエラーになります。httpをNode.jsを使用して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ではありません。

あなたがやろうとしているように、あなたが同じポートにこれらのサーバの両方を結合してはならないことアナンドBhatさんのノートによって解答に加えて

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

1

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

それがうまくいくかもしれませんそれはあなたがそれを期待する方法ではないかもしれません。あなたがする場合:

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

ここで、PORT_HTTPはです。 PORT_HTTPSは、例えば80である。 443では、どのサーバーがどの要求を処理するかを常に知ることができます。

関連する問題