首页 > 解决方案 > 表示http客户端连接服务器,https客户端无法连接服务器

问题描述

我已经制作了一个可以很好地使用 http 的服务器。服务器已启动,我可以使用 Chrome 和 Postman 连接到它。当我将服务器切换到 https 时,服务器已启动,但我无法使用 Chrome 和 Postman 连接到它。ssl 密钥由 certbot 签名。

服务器.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);

应用程序.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;

标签: node.jsexpresssslhttpscertbot

解决方案


...服务器已启动,但我无法使用 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。


推荐阅读