0x00 导论
因为苹果大人要求2016年底把所有请求全部升级为https,故有这篇文章。
0x01 制作CSR证书
1.1 创建文件夹并切换至文件夹ssl_workspace
mkdir ssl_workspace && cd ssl_workspace
1.2 在服务器里,创建CSR证书使用命令:
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr
把标红处替换成你的域名
0x02 域名申请网站购买SSL
把ssl_workspace文件夹下的server.csr里的全部内容,粘贴复制至域名申请网站的文本框里并提交,这里我使用的是name.com
-----BEGIN CERTIFICATE REQUEST-----
xxx密文xxxx
-----END CERTIFICATE REQUEST-----
0x03,在服务器创建ssl证书验证文件
3.1 你的nodejs项目根目录,使用命令创建index.js文件和存储ssl证书的文件夹,并切换至sslcert文件夹
touch index.js && mkdir sslcert
3.2 登录name.com的SSL证书管理
把Server Certificate里全部内容(从-----BEGIN CERTIFICATE-----至-----END CERTIFICATE-----结束)复制,在Linux服务器里使用vim server.crt
创建文件,按i键
进入编辑模式,
把内容全部复制进来,按ESC键
退出编辑模式,敲击:x
保存并退出。
3.3 同理按上述步骤,创建intermediate.crt文件。
3.4 ROOT文本框里的内容不需要做任何处理
3.5 把之前ssl_workspace文件夹下的server.key复制至sslcert文件夹,我这里使用的命令如下:
cp ~/ssl_workspace/server.key ~/server/express/sslcert
3.6 现在在sslcert 文件夹下有如下文件:intermediate.crt server.crt server.key
0x04,编写服务器端相关文件
4.1 首先确保nodejs的版本,使用node -v
命令查询,这里我的版本是v4.2.3,你至少要达到或比4.2.3版本高,这里我吃过亏的,之前使用apt-get来安装node导致版本过低,ssl通道一直开启不通。
4.2 使用命令初始化项目,
npm init
4.3 在你的项目引入依赖包,做使用npm install(i)引入依赖包。
npm i --save express path fs https http
4.4 编写 vim router.js,把如下内容粘贴进来
module.exports = function (app) {
app.get('/', function (req, res) {
res.send('Hello world');
});
4.5 编写vim index.js文件,把如下内容粘贴进来
var fs = require('fs');
var http = require('http');
var https = require('https');
var express = require('express');
var path = require('path');
var privateKey = fs.readFileSync('sslcert/server.key', 'utf8');
var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
var ca = [ fs.readFileSync('sslcert/intermediate.crt', 'utf8') ];
var credentials = {ca: ca, key: privateKey, cert: certificate};
var app = express();
var routes = require('./router')(app);
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
httpServer.listen(80);
httpsServer.listen(443);
4.6 现在项目目录结构如下:index.js router.js package.json sslcert/ node_modules/
4.7 使用如下命令启动服务器
sudo nohup node index.js &
4.8 此外,你还可以使用命令ps -ef|grep node
查询node进程号和使用kill -9 进程号
停止服务器
0x05
在你的浏览器敲击 , https://YourDomainName, 看到Hello World!说明配置成功!