表示http客户端连接到服务器,https客户端无法连接到服务器

时间:2020-03-14 21:30:14

标签: node.js express ssl https certbot

我已经使服务器可以正常使用http。服务器已启动,我可以使用Chrome和Postman连接到该服务器。当我将服务器切换为https时,服务器已启动,但无法使用Chrome和Postman连接到该服务器。 ssl密钥由certbot签名。

server.js

const https = require('https');
const app = require(__dirname+'/app');
const fs = require('fs');

const port = 80;
const options = {
    cert: fs.readFileSync("ssl/v2/fullchain.pem"),
    key: fs.readFileSync("ssl/v2/privkey.pem")
}

https.createServer(options, app).listen(port);
console.log(port);

app.js

const express = require('express');
const morgan = require('morgan');
const body_parser = require('body-parser');

const homepage = require(__dirname+'/routes/homepage');
const user = require(__dirname+'/routes/user');
const test = require(__dirname+'/routes/test');
const table = require(__dirname+'/routes/table');
const catalog = require(__dirname+'/routes/catalog');
const cart = require(__dirname+'/routes/cart');
const payment = require(__dirname+'/routes/payment');

const app = express();

app.use(morgan("dev"));
app.use(body_parser.json());
app.use(body_parser.urlencoded({extended: true}));

app.use("/", homepage);
app.use("/user", user);
app.use("/test", test);;
app.use("/table", table);
app.use("/catalog", catalog);
app.use("/cart", cart);
pp.use("/payment", payment);

module.exports = app;

1 个答案:

答案 0 :(得分:1)

...服务器已启动,但我无法通过Chrome和Postman连接到服务器

从您的描述中还不清楚尝试连接到服务器的程度,但是我认为您将尝试使用简单的https://example.com/

const port = 80;
...
https.createServer(options, app).listen(port);

但是根据您的代码,您尝试在为纯HTTP(80)保留的端口上使用HTTPS,而不是为HTTPS(443)使用默认端口。因此,https://example.com/将不起作用,因为它将尝试使用端口443,并且您需要使用https://example.com:80/明确指定其他端口。但是更好的选择当然是在代码的第一位使用默认端口HTTPS,即443而不是80。