OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析
起因
最近在学习安全协议,大多数实验都是基于Windows下IIS,或者Linux下nginx搭建的Web服务,搭建环境和编写配置文件比较麻烦。而且我有多个不同环境的设备,折腾起来也比较麻烦,最好是开箱即用。
所以我就用nodejs + express写了个跨平台的项目专门用于对比没有使用SSL/TLS的http与使用了的https协议。
如果你对代码不感兴趣,仅是想要分析协议,可以到文章末尾的Github仓库中去下载该项目运行即可。
搭建环境
安装nodejs,访问官网https://nodejs.org,建议下载LTS版本并安装
node --version
npm --version
运行上方命令出现版本号即可。
在终端中运行如下命令安装yarn
npm -g install yarn
yarn --version
出现版本号即为成功。
另外需要搭建OpenSSL环境,这个教程网上有很多,请自行搜索。
代码部分
接下来主要分享代码编写思路。
目录结构
创建项目目录为http_ssl
,并在终端中进入
mkdir http_ssl
cd http_ssl
使用yarn初始化,按照提示填写或者一路回车即可
yarn init
创建静态资源目录、配置文件目录、源码目录
mkdir asset
mkdir config
mkdir src
安装依赖
添加express包等
yarn add express
在package.json
文件中修改type
为module
,将语法为ES6,并编写启动命令scripts
。(如果没有直接添加)
"type":"module",
"scripts":{
"start":"node ./src/index.js"
}
完整文件大致如下
{
"name": "http_ssl",
"version": "1.0.0",
"main": "index.js",
"author": "cairbin",
"license": "MIT",
"dependencies": {
"express": "^4.19.2"
},
"type":"module",
"scripts":{
"start":"node ./src/index.js"
}
}
初始文件
我们希望http和https的端口号、主机地址之类的都能够放在配置文件里,而非代码中,这样方便我们更改,于是编写配置文件。
touch config/config.js
我们这里为了让配置文件能够像模块一样倒入,直接为js
后缀,编辑该文件
// config/config.js
export default {
server:{
static: '../asset', //静态资源目录,注意'../',因为index.js在src下,否则找不到这个目录
http:{
host: "localhost", //主机地址
port: 8848 //端口号
},
https:{
host: