使用HTTPS的Express JS不会加载页面

时间:2017-09-26 11:29:53

标签: javascript node.js express ssl

我想用https启动我的网络应用程序。我用这个命令创建了自签名密钥和证书:

openssl req -newkey rsa:2048 -sha256 -nodes -keyout key.key -x509 -days 365 -out public.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=my.example.com"

这为我创建了key.keypublic.pem个文件。

现在我想将它们分配给我的快递申请:

const app = express();
const https = require('https');
const http = require('http');
const fs = require('fs');

app.get('/*', (req, res) => {
        res.send("Hello");
});

const options = {
    key: fs.readFileSync(`${__dirname}/key.key`),  // Path to file with PEM private key
    cert: fs.readFileSync(`${__dirname}/public.pem`)  // Path to file with PEM certificate
};
https.createServer(options, app).listen(443);
http.createServer(app).listen(80);

当我打开my.example.com/时,它会成功显示Hello条消息文本。 但是,当我这样打开https://my.example.com/时,我的浏览器无法打开此页面并显示ERR_SSL_PROTOCOL_ERROR错误消息。

我错过了什么?

3 个答案:

答案 0 :(得分:2)

尝试添加以下代码,我认为您需要通过https打开

var fs = require('fs');
var https = require('https');
var express = require('express');
var key  = fs.readFileSync('sslcert/server.key', 'utf8');
var cert = fs.readFileSync('sslcert/server.crt', 'utf8');

var cred = {key: key, cert: cert};
var app = express();

var serv = https.createServer(cred, app);

serv.listen(443);

我希望这对你有用

答案 1 :(得分:1)

可能您的SSL未正确创建。

尝试:

items.find(
{
            "repo":"my-repo-local"
    }
).sort({"$desc" : ["created"]}).limit(5)

答案 2 :(得分:1)

我相信你的代码和逻辑没有问题...... 如果您使用chrome作为浏览器并且它出现了这样的错误,那可能是因为您使用的是自签名证书...

在测试的情况下有一种解决方法......但我建议您购买SSL证书,如果可以的话......