koa框架構建Https服務器指南

HTTP正在離咱們遠去,HTTPS成爲惟一的選擇

圖片描述

從2017年1月份起,Chrome瀏覽器將會把採用http協議的網站標記爲「不安全」網站。node

面對變幻的互聯網安全局勢,http實在太過陳舊了。將nodejs項目徹底切換爲https的需求愈來愈急促,本文將基於koajs框架講解如何構建https。npm

開始以前,我假設你已經擁有如下條件:瀏覽器

  1. 擁有外網獨立IP的服務器。(eg.阿里雲ecs)安全

  2. 已備案域名。(eg.萬網備案域名)服務器

申請備案域名將須要超過一個月時間的等待。若是找淘寶購買的話,請務必確認是萬網備案域名。app

申請SSL證書

假設您如今擁有域名www.yourdomain.com框架

免費SSL服務有如下選擇dom

  1. Let's Encryptkoa

    網頁常掛。網站

  2. StartCOM

    致使被牆。

  3. 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文件
打開郵箱附件,您將獲得四個文件

  1. 域名文件: www_yourdomain_com.crt (名稱是您的域名)

  2. 短文件: COMODORSAAddTrustCA.crt

  3. 長文件: COMODORSADomainValidationSecureServerCA.crt

  4. 根證書: 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

koajs 構建https服務器

一、安裝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服務器是否已經運行?

相關文章
相關標籤/搜索