Node.js: 一个刚刚够用的 HTTPS 服务器

3,809 阅读1分钟

有时候,需要创建一个https服务器,以便测试使用。使用node.js完成此项工作还是比较简单的。另外,为了可以创建https,需要openssl工具栈。

首先创建证书:

openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem

然后可以看到生成的两个文件:

$ls *.pem 
cert.pem    key.pem

创建node.js文件

编辑js源代码文件(server.js)

var https = require('https');
var fs = require('fs');
var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};
var a = https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end(JSON.stringify({foo:"bar"}))
}).listen(8000);

##尝试

运行服务器:

node server.js

然后访问:

https://localhost:8000

可以看到json文件的话,就算成功。

如果是http服务器

这样情况,不需要证书,代码改成下面的就可以了。

const http = require('http')  
const port = 3000
const requestHandler = (request, response) => {  
  console.log(request.url)
  response.end(JSON.stringify({foo:"bar"}))
}
const server = http.createServer(requestHandler)
server.listen(port, (err) => {  
  if (err) {
    return console.log('something bad happened', err)
  }
  console.log(`server is listening on ${port}`)
})