无法通过节点和 express (https) 找出 SSL
Can't figure out SSL with node and express (https)
我一直致力于制作一个网站,但在让我的网站正常运行后,我开始尝试获取 SSL,这样恼人的“警告”符号就会消失。不幸的是,我陷入了真正的僵局,我找到的所有帮助我解决这个问题的资源似乎都已经过时,或者至少与我正在做的事情不兼容。
我原来的工作 server.js 文件:
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/index.html'));
});
app.listen(port);
我试过但最终不起作用的方法:
const fs = require('fs');
const options = {
cert: fs.readFileSync('cert/certificate.crt'),
ca: fs.readFileSync('cert/ca_bundle.crt'),
key: fs.readFileSync('cert/private.key')
};
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
const httpsPort = process.env.PORT || 3030;
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/index.html'));
});
app.listen(port);
httpsPort.createServer(options, app).listen(httpsPort);
自从我开始处理这个 https 问题以来,我一直在努力思考整个项目。
将不胜感激!
嗯,这里有一些问题。首先,您尝试 listen
两件不同的事情。 app.listen
是 http.createServer({ ...options }, app)
的缩写。
其次 - 您的代码是 httpsPort.createServer(options, app).listen(httpsPort);
,基本上可以转换为 3030.createServer(options, app).listen(3030)
。这是我通常做的事情:
const https = require('https');
const server = https.createServer(options, app).listen(port)
如果你想同时支持两者,那么你需要同时包含 http
和 https
包,并且有一个 if-else(或类似的东西)以便你使用正确的包创建服务器。
在这种情况下,您应该不要在应用程序上收听!
我一直致力于制作一个网站,但在让我的网站正常运行后,我开始尝试获取 SSL,这样恼人的“警告”符号就会消失。不幸的是,我陷入了真正的僵局,我找到的所有帮助我解决这个问题的资源似乎都已经过时,或者至少与我正在做的事情不兼容。
我原来的工作 server.js 文件:
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/index.html'));
});
app.listen(port);
我试过但最终不起作用的方法:
const fs = require('fs');
const options = {
cert: fs.readFileSync('cert/certificate.crt'),
ca: fs.readFileSync('cert/ca_bundle.crt'),
key: fs.readFileSync('cert/private.key')
};
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
const httpsPort = process.env.PORT || 3030;
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, '/index.html'));
});
app.listen(port);
httpsPort.createServer(options, app).listen(httpsPort);
自从我开始处理这个 https 问题以来,我一直在努力思考整个项目。 将不胜感激!
嗯,这里有一些问题。首先,您尝试 listen
两件不同的事情。 app.listen
是 http.createServer({ ...options }, app)
的缩写。
其次 - 您的代码是 httpsPort.createServer(options, app).listen(httpsPort);
,基本上可以转换为 3030.createServer(options, app).listen(3030)
。这是我通常做的事情:
const https = require('https');
const server = https.createServer(options, app).listen(port)
如果你想同时支持两者,那么你需要同时包含 http
和 https
包,并且有一个 if-else(或类似的东西)以便你使用正确的包创建服务器。
在这种情况下,您应该不要在应用程序上收听!