如何用Node搭建Https服务
Node.js用于做小程序后台服务,域名要求必须是Https协议。在Node.js开启Http服务是非常简单的,如下:
consthttp=require('http');
constserver=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证书方式有两种:
自己借助openSSL工具生成SSL证书
下载某些平台提供的免费/付费的SSL证书(推荐)
我是使用某云平台提供免费的证书
点击下载后选择服务器类型
下载后的文件分别是以.key、.pem
为后缀,其中.key
文件是base64加密私钥,.pem
文件是base64加密的证书
使用Node.js自身的Https模块开启一个服务
相较Http,它多了一个options参数。
consthttps=require('https');
constfs=require('fs');
constpath=require('path');
constoptions={
key:fs.readFileSync(path.join(__dirname,'./ssl/9499016_www.linglan01.cn.key')),
cert:fs.readFileSync(path.join(__dirname,'./ssl/9499016_www.linglan01.cn.pem')),
}
;
constserver=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举例:
consthttps=require('https');
constfs=require('fs');
constpath=require('path');
constexpress=require('express')
constapp=express();
app.get('/chat',(req,res)=>
{
res.send('我是https')
}
);
constoptions={
key:fs.readFileSync(path.join(__dirname,'./ssl/9499016_www.linglan01.cn.key')),
cert:fs.readFileSync(path.join(__dirname,'./ssl/9499016_www.linglan01.cn.pem')),
}
;
constserver=https.createServer(options,app);
server.listen(8080,()=>
{
console.log('服务已开启');
}
)
以上就是关于“如何用Node搭建Https服务”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用Node搭建Https服务
本文地址: https://pptw.com/jishu/744.html