Node.js和express和production ssl certificate

时间:2016-07-11 11:33:03

标签: node.js ssl ssl-certificate

我在使用node.js实现SSL证书时遇到问题。

使用localhost可以正常工作,但是一旦移动到Ubuntu服务器,就会出现多个问题。

我已将其最小化为以下代码 证书(.crt)和密钥(.key)位于证书目录中,名称为localhost.key或exampleSSLServer.crt。 我正在使用RapidSSL证书,并被告知我还​​需要包含中间证书。

function serverSSL(host,port,intermediate) {
    var https   = require('https');
    var fs      = require('fs');
    var express = require('express');
    var app = express();
    var httpsOptions = {
        key:  fs.readFileSync('certificates/' + host + '.key'),
        cert: fs.readFileSync('certificates/' + host + '.crt')
    };
    if (intermediate) {
        httpsOptions.ca = [fs.readFileSync('certificates/' + intermediate + '.crt')];
    }
    var server = https.createServer(httpsOptions, app).listen({
        port:  port,
        host: host
    }, initServer);

    function initServer() {
        var host = server.address().address,
            port = server.address().port;
        console.log(
          'Example app listening at https://%s:%s', host, port);
    }

    app.get('/hello', function (req, res) {
        var msg = 'Hello SSL';
        console.log(msg);
        res.send(msg);
    });
}

我尝试过两次不同的电话

  1. serverSSL( '本地主机',8445);
  2. serverSSL( 'exampleSSLServer.com',8445, '中间')
  3. localhost工作正常,但是当我使用我的服务器时,我收到以下堆栈错误:

    Error: listen EADDRNOTAVAIL 52.xxx.xxx.xxx:8445
        at Object.exports._errnoException (util.js:873:11)
        at exports._exceptionWithHostPort (util.js:896:20)
        at Server._listen2 (net.js:1237:19)
        at listen (net.js:1286:10)
        at net.js:1395:9
        at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:64:16)
        at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:83:10)   
    

    如果我取出主机参数,那么它不会失败,但它也没有响应。 我改变了代码轻微使用http与https,似乎工作正常。 此外,我尝试了很多不同的端口,出现同样的问题。

    他们的SSL证书可能存在问题,但我没有简单的方法来调试它。我很乐意尝试其他工具。

    无论如何,我们将不胜感激。

0 个答案:

没有答案