相信大家对https都不陌生,其实就是在http的基础上套了一个SSL层,更加安全而已。由于node的风靡,一些之前只有运维或后端开发才接触到的服务器知识,前端也需要了解甚至熟悉了。今天给大家介绍如何给node应用配置https协议。 这是我参与更文挑战的第5天,活动详情查看: 更文挑战
申请证书
首先配置https,需要一个SSL证书,证书就不用多介绍了吧,就是一个证明自己网站域名的证件而已,通过证书报备的网站自然要合规一点。我们以阿里云为例介绍如何申请、校验证书
首先到阿里云官网SSL证书页,选择DV单域名证书,注意是免费的哦。
点击立即购买(需要事先注册阿里云账户并登陆)
购买完毕,需要提供一些信息进行审核。包含申请和验证两部分:
输入需要绑定的域名,联系人(电邮,身份证、手机号)信息,点击下一步进入解析验证部分:
到域名提供商处(你购买域名的地方)配置一个解析:选择TXT类型,把这里的主机记录和记录值拷贝后,到域名提供商里那里添加记录并提,一般10分钟内生效。然后点击验证按钮,上图绿色文字表示我们验证通过了。
上述步骤完成后,提交审核。一般很快就会通过(亲测,秒过)。审核通过后回到控制台可以看到拥有的证书信息了:
我们点击下载证书文件,系统提示你选择对应的服务器类型,我们选择nginx。打开下载文件夹里面包含两个文件:
.key是密钥文件,.pem是证书文件。
项目配置及本地测试
接下来,我们新建一个简单的express应用,并配置它的https协议。我们的目录结构很简单:
keys目录存放的是我们的证书文件。index.js是入口文件。
另外,我们还需要一个npm包:https,它负责处理证书配置以及创建https server。入口文件的代码:
const express = require('express')
const https = require("https");
const fs = require("fs");
const path = require("path");
const app = express()
//配置静态资源目录
app.use(express.static('public'))
//配置https
const httpsOptions = {
//配置证书所在的路径
key: fs.readFileSync(path.resolve("./keys/my-certificate.key")),
cert: fs.readFileSync(path.resolve("./keys/my-certificate.pem")),
};
//创建服务器
var httpsServer = https.createServer(httpsOptions, app);
var port = 443;
//监听443端口
httpsServer.listen(port);
httpsServer.on("listening", () => {
var addr = httpsServer.address();
var bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port;
console.log("Listening on " + bind);
});
本地运行:npm run start,浏览器输入https://localhost:
可以看到浏览器提示我们站点不安全,这是因为证书配套的域名不是localhost,接下来我们将这个应用部署到配套的域名下
部署到对应的域名
首先要保证应用监听的端口在你的服务器上是开启的,我这边已经默认开启了,如果你没有开启,需要手动开启(入站方向)
接下来把代码上传到服务器并执行:
- 安装依赖
npm install - 启动应用
npm run start打开本地浏览器,输入我们的证书绑定的域名:
可以看到不安全的橙色警告字样消失了。
最后
以上就是零成本配置https的教程,感谢阅读。至于其他类型服务端的配置如nginx、tomcat啊,基本都差不多。
另:为了demo案例的测试与展示,我把自己的网站停掉了(好拼😂),赶紧启动去