我想用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.key
个public.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
错误消息。
我错过了什么?
答案 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证书,如果可以的话......