【发布时间】:2018-03-07 14:37:59
【问题描述】:
我想使用 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 错误消息。
我错过了什么?
【问题讨论】:
-
options是什么? -
@baao 哎呀。我已经更新了我的问题
-
如果指定了编码选项,则 fs.readFileSync 返回一个字符串,否则返回一个缓冲区。所以需要指定编码才能获取内容为字符串。
-
@baao 我添加了编码,仍然
https没有在我的浏览器中加载
标签: javascript node.js express ssl