关于node.js:Nodejs搭建Https服务

1次阅读

共计 1691 个字符,预计需要花费 5 分钟才能阅读完成。

Node.js 用于做小程序后盾服务,域名要求必须是 Https 协定。在 Node.js 开启 Http 服务是非常简单的,如下:

const http = require('http');
const server = http.createServer((req, res) => {res.writeHead(200, { 'Content-Type': 'text/html;charset=utf8'});
    res.end('拜访胜利')
});
server.listen(8080, () => {console.log('服务已开启');
})

如果想应用 Https 服务须要两步:1. 须要有一份 SSL 证书;2. 应用 Node.js 本身的 Https 模块。

SSL 证书

获取 SSL 证书形式有两种:

  1. 本人借助 openSSL 工具生成 SSL 证书
  2. 下载某些平台提供的收费 / 付费的 SSL 证书(举荐)

我是应用某云平台提供收费的证书

点击下载后抉择服务器类型

下载后的文件别离是以 .key、.pem 为后缀,其中 .key 文件是 base64 加密私钥,.pem文件是 base64 加密的证书

应用 Node.js 本身的 Https 模块开启一个服务

相较 Http,它多了一个 options 参数。

const https = require('https');
const fs = require('fs');
const path = require('path');
const options = {key: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.key')),
    cert: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.pem')),
};
const server = https.createServer(options, (req, res) => {res.writeHead(200, { 'Content-Type': 'text/html;charset=utf8'});
    res.end('拜访胜利')
});
server.listen(8080, () => {console.log('服务已开启');
})

因为 SSL 证书我绑定的域名是 www.linglan01.cn,当我应用 https://127.0.0.1:8080 拜访服务时与绑定的域名不相符,它会被拦挡拜访,仅容许 www.linglan01.cn 拜访。

应用域名为 www.linglan01.cn 能力失常的拜访。

应用 Express 框架开启 Https

工作中必定是应用社区的 Express 等框架进行开发,想在 Express 等框架中开启 Https 也非常容易,以 Express 举例:

const https = require('https');
const fs = require('fs');
const path = require('path');
const express = require('express')
const app = express();
app.get('/chat', (req, res) => {res.send('我是 https')
});
const options = {key: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.key')),
    cert: fs.readFileSync(path.join(__dirname, './ssl/9499016_www.linglan01.cn.pem')),
};
const server = https.createServer(options, app);
server.listen(8080, () => {console.log('服务已开启');
})

总结

Node.js 中搭建 Https 服务不难,Node.js 曾经为咱们提供了 Https 模块能够快捷的实现搭建。Https 服务理论中仅会应用到线上环境,如果本地环境也须要,咱们也能够应用 openSSL 工具生成一个证书。

正文完
 0