從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服務器是否已經運行?