从2017年1月份起,Chrome浏览器将会把采用http协议的网站标记为“不安全”网站。node
面对变幻的互联网安全局势,http实在太过陈旧了。将nodejs项目彻底切换为https的需求愈来愈急促,本文将基于koajs框架讲解如何构建https。npm
开始以前,我假设你已经拥有如下条件:浏览器
拥有外网独立IP的服务器。(eg.阿里云ecs)安全
已备案域名。(eg.万网备案域名)服务器
申请备案域名将须要超过一个月时间的等待。若是找淘宝购买的话,请务必确认是万网备案域名。app
假设您如今拥有域名www.yourdomain.com框架
免费SSL服务有如下选择dom
Let's Encryptkoa
网页常挂。网站
StartCOM
致使被墙。
WoSign
运营商没底线。
购买淘宝COMODO证书
https://item.taobao.com/item....
这家店6.98元购买一个单域名证书,关键客服还尽职尽责一路指导,极大节约开发者的时间成本,可靠性远超不稳定的免费证书,推荐。
一、生成 server.csr+server.key
在命令行下输入:
openssl req -new -nodes -newkey rsa:2048 -keyout server.key -out server.csr
将弹出询问设置:
前几项根据真实状况填写,
Common Name务必填写您要注册的域名,eg: www.yourdomain.com (注意您申请的是单域名,因此要加www)
以后三项不要填写。
您的目录下将生成server.csr+server.key两个文件,将文件传给淘宝客服,大约两小时内就会收到邮件。
二、经过证书链生成.pem文件
打开邮箱附件,您将获得四个文件
域名文件: www_yourdomain_com.crt (名称是您的域名)
短文件: COMODORSAAddTrustCA.crt
长文件: COMODORSADomainValidationSecureServerCA.crt
根证书: AddTrustExternalCARoot.crt
四个文件(这四个文件称为证书链)用cat命令相衔接,生成server.pem
cat www_yourdomain_com.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt AddTrustExternalCARoot.crt >server.pem
将本步骤生成的server.pem和上步骤生成的server.key保存。
-server.js -ssl/server.key -ssl/server.pem
一、安装npm包
npm i koa koa-sslify
koa-sslify将http请求强制转换为https请求。
二、server.js代码
"use strict"; var koa = require('koa'); var http = require('http'); var https = require('https'); var fs = require('fs'); var enforceHttps = require('koa-sslify'); var app = koa(); // Force HTTPS on all page app.use(enforceHttps()); // index page app.use(function * (next) { this.body = "hello world from " + this.request.url; }); // SSL options var options = { key: fs.readFileSync('./ssl/server.key'), //ssl文件路径 cert: fs.readFileSync('./ssl/server.pem') //ssl文件路径 }; // start the server http.createServer(app.callback()).listen(80); https.createServer(options, app.callback()).listen(443); // console.log('https server is running');
将文件上传服务器端,node server启动,进入你的域名,试一试https服务器是否已经运行?