10分钟教你免费配置https

899 阅读3分钟

相信大家对https都不陌生,其实就是在http的基础上套了一个SSL层,更加安全而已。由于node的风靡,一些之前只有运维或后端开发才接触到的服务器知识,前端也需要了解甚至熟悉了。今天给大家介绍如何给node应用配置https协议。 这是我参与更文挑战的第5天,活动详情查看: 更文挑战

申请证书

首先配置https,需要一个SSL证书,证书就不用多介绍了吧,就是一个证明自己网站域名的证件而已,通过证书报备的网站自然要合规一点。我们以阿里云为例介绍如何申请、校验证书

首先到阿里云官网SSL证书页,选择DV单域名证书,注意是免费的哦。

点击立即购买(需要事先注册阿里云账户并登陆)

购买完毕,需要提供一些信息进行审核。包含申请和验证两部分:

image.png

输入需要绑定的域名,联系人(电邮,身份证、手机号)信息,点击下一步进入解析验证部分:

image.png 到域名提供商处(你购买域名的地方)配置一个解析:选择TXT类型,把这里的主机记录和记录值拷贝后,到域名提供商里那里添加记录并提,一般10分钟内生效。然后点击验证按钮,上图绿色文字表示我们验证通过了。

上述步骤完成后,提交审核。一般很快就会通过(亲测,秒过)。审核通过后回到控制台可以看到拥有的证书信息了: image.png

我们点击下载证书文件,系统提示你选择对应的服务器类型,我们选择nginx。打开下载文件夹里面包含两个文件:

image.png

.key是密钥文件,.pem是证书文件。

项目配置及本地测试

接下来,我们新建一个简单的express应用,并配置它的https协议。我们的目录结构很简单:

image.png

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:

image.png

可以看到浏览器提示我们站点不安全,这是因为证书配套的域名不是localhost,接下来我们将这个应用部署到配套的域名下

部署到对应的域名

首先要保证应用监听的端口在你的服务器上是开启的,我这边已经默认开启了,如果你没有开启,需要手动开启(入站方向)

接下来把代码上传到服务器并执行:

  • 安装依赖npm install
  • 启动应用npm run start 打开本地浏览器,输入我们的证书绑定的域名:

image.png

可以看到不安全的橙色警告字样消失了。

最后

以上就是零成本配置https的教程,感谢阅读。至于其他类型服务端的配置如nginx、tomcat啊,基本都差不多。

另:为了demo案例的测试与展示,我把自己的网站停掉了(好拼😂),赶紧启动去