背景
学习网易云音乐小程序开发,用了老师的node JS做后端服务器,上线小程序体验版必须要https接口。
接下来就是配置NodeJs服务https踩的坑跟发现的惊喜。
配置https
下载与配置
密钥生成
1 运行命令 : openssl genrsa -out privatekey.pem 1024
2 运行命令 : openssl req -new -key privatekey.pem -out certrequest.csr
3 运行命令 :openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
到此,在项目文件夹里面生成三个密钥文件
把上面生成的三个密钥文件复制到node项目,创建启动脚本
启动nodeJS 后端服务:
遇到问题Openss不认识
1. 'Openssl' is not recognized as an internal or external command
原因是未在windows系统安装Openssl,这个不是系统自带,需要自己去下载安装
源码网址 /source/index.html
下载: 这个下载比较,慢慢等一下
1)网站:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions,点击如 图选择完整版;
或者用百度网盘下载:
链接:https://pan.baidu.com/s/1PRw1rEDP853KkujUJdaAKA?pwd=8qz0
提取码:8qz0
下载完成之后安装:;
安装完成之后要求打赏10元,一次性配置完成。不管。
先管理员看看安装情况 :显示还是未认识
要收钱,弃~~~
快捷实现配置密钥(已经安装git情况下)惊喜!!!!!
无解了,然后搜索了一下电脑发现很多地方都有openSSh这些东西,
之前用git配置ssh密钥,想着能不能用这个git软件现在实现,接着随便找了个目录,右键打开 git控制窗口
然后在git bath批处理窗口 ,执行3个生成密钥文件命令:
1 运行命令 : openssl genrsa -out privatekey.pem 1024
2 运行命令 : openssl req -new -key privatekey.pem -out certrequest.csr
3 运行命令 :openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
最后执行:
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
生成3个文件,复制到项目根目录下的一个新建key的目录
certrequest.csr
privatekey.pem
certificate.pem
然后创建服务启动脚本 :
http与https同时服务源码:在项目根目录下创建: httpsAndHttp.js, 然后把下面的代码复制进去,
var SSLPORT = 499; //https 端口 当 https 使用默认端口的时候可能会出现如下报错,把默认443修改成其它不被占用的端口就可以正常访问。
var app = require('express')();
var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey = fs.readFileSync('./key/privatekey.pem', 'utf8'); //密钥路径,编码
var certificate = fs.readFileSync('./key/certificate.pem', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
var PORT = 3030; //http 端口
// var SSLPORT = 443; //https 端口
var SSLPORT = 499; //https 端口
httpServer.listen(PORT, function() {
console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
httpsServer.listen(SSLPORT, function() {
console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});
// Welcome
app.get('/', function(req, res) {
if(req.protocol === 'https') {
res.status(200).send('Welcome https!');
}
else {
res.status(200).send('Welcome http!');
}
});
加密不用443,改成了499端口,防止冲突。然后,在webstorm里的终端指令窗口,执行
node httpsAndHttp.js
启动成功,打开验证:OK--- 开心
打开网页,输入
https://localhost:499/
提示不安全,不用管,点击高级,里面有个继续访问的按钮 。
参考:node配置本地https服务_菜鸟驿站2020的博客-CSDN博客