express启用https小记

微信小程序的服务器域名只支持https和wss,我用nodejs的express作为后端服务,经百度和折腾,成功启用https服务。

总结以下几步,供参考。

1.申请SSL证书

笔者用的是腾讯云,申请的是为期一年免费的证书,具体申请步骤不展开介绍,颁发证书后,得到文件:


需要用到的文件在文件夹IIS中。


2.将证书放到项目中

将后缀为.pfx的证书文件放到express项目的静态文件夹中,笔者放在项目根目录下的public文件夹下。


3.在express的index.js中引用证书

import express from 'express';
import fs from 'fs';
import path from 'path';
import bodyParser from 'body-parser';
// 引入history模块
import history from 'connect-history-api-fallback';
import https from 'https';
const app = express();
const options = {
    pfx: fs.readFileSync(path.join(__dirname, 'public','www.****.***.pfx')),
    passphrase: '***********'
};
//options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)
let server = https.createServer(options,app);
app.use(history());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use("/static/file",express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404    next(err)});
// error handler
app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    console.log(err);
    res.send(err.message)
});
// 设置监听端口
const SERVER_PORT = 3000;
server.listen(SERVER_PORT, (req, res) => {
    console.info(`服务已经启动,监听端口${SERVER_PORT}`)
})
export default app复制代码

引入https模块,设置options配置。

如上述代码,options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)

之后定义server,传入option和express实例app,设置监听端口即可。

4.启动服务

将后端项目部署到服务器中,启动express,可正常访问https服务。

后言

笔者大四下,很遗憾之前完成毕业设计那段时间没有坚持写文章。

目前全栈开发了一款微信小程序,刚上线不久。还写了一款桌面程序,不过引入微信支付不太顺利。

希望能把自己的经验和遇到的坑多多写成文章记录下来,对同样有兴趣的朋友提供参考。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Express启用HTTPS服务,需要执行以下步骤: 1. 生成SSL证书 可以使用openssl命令生成自签名SSL证书。在终端中输入以下命令: ``` openssl req -nodes -new -x509 -keyout server.key -out server.cert ``` 这将生成一个名为“server.key”的私钥文件和一个名为“server.cert”的自签名SSL证书文件。 2. 在Express中配置HTTPSExpress中,我们需要使用Node.js内置的https模块来启用HTTPS服务。首先,我们需要引入https模块: ``` const https = require('https'); ``` 接下来,在创建Express应用程序之前,我们需要将SSL证书和私钥加载到内存中: ``` const fs = require('fs'); const privateKey = fs.readFileSync('server.key', 'utf8'); const certificate = fs.readFileSync('server.cert', 'utf8'); const credentials = {key: privateKey, cert: certificate}; ``` 然后,我们可以像通常一样创建Express应用程序: ``` const express = require('express'); const app = express(); ``` 最后,我们可以使用https模块的createServer方法来创建HTTPS服务器并将其连接到Express应用程序: ``` const httpsServer = https.createServer(credentials, app); httpsServer.listen(443, () => { console.log('HTTPS Server running on port 443'); }); ``` 这将启动一个HTTPS服务器,并在端口443上监听传入的请求。 完整的Express应用程序代码如下所示: ``` const https = require('https'); const fs = require('fs'); const privateKey = fs.readFileSync('server.key', 'utf8'); const certificate = fs.readFileSync('server.cert', 'utf8'); const credentials = {key: privateKey, cert: certificate}; const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); const httpsServer = https.createServer(credentials, app); httpsServer.listen(443, () => { console.log('HTTPS Server running on port 443'); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值