制作SSL证书并上传至Nodejs服务器

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

把标红处替换成你的域名


ssl.png

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!说明配置成功!

你可能感兴趣的:(制作SSL证书并上传至Nodejs服务器)