我在使用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);
});
}
我尝试过两次不同的电话
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证书可能存在问题,但我没有简单的方法来调试它。我很乐意尝试其他工具。
无论如何,我们将不胜感激。