Express JS,使用HTTPS不会加载页面
我想用https启动我的Web应用程序。 我用这个命令创build了自签名密钥和证书:
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"
这为我创buildkey.key
nad 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
错误消息。
我错过了什么?
尝试添加下面的代码,我认为你需要通过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);
我希望这对你有用
可能你的SSL没有被正确地创build。
尝试:
openssl genrsa -out key.pem 2048 openssl req -new -key key.pem -out client.csr openssl x509 -req -in client.csr -signkey key.pem -out cert.pem
我相信你的代码和逻辑没有错……如果你使用chrome作为浏览器,并且出现这种错误,可能是因为你正在使用一个自签名的证书…
在testing的情况下有一个方法…但我build议你购买一个SSL证书,如果你可以…