【Node.js】Koaで HTTPS Server を建てる

NodejsのKoa(WAF)でHTTPSサーバを建てる方法です。

nodejs

OpenSSLでRSA鍵の生成

まず秘密鍵とデジタル証明書を OpenSSL で生成します。
openssl rsa で秘密鍵のパスフレーズを解除しています。

$ mkdir keys;cd keys
$ openssl version
OpenSSL 1.0.1g 7 Apr 2014
$ openssl genrsa -aes128 1024 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt 
$ openssl rsa -in server.key -out decrypt_server.key

KoaでHTTPSサーバを建てる

var koa = require('koa')
var route = require('koa-route')
var https = require('https');
var fs = require('fs');
var options = {
    key: fs.readFileSync('keys/decrypt_server.key'),
    cert: fs.readFileSync('keys/server.crt'),
};

var port = 4430
var app = koa()

app.use(route.get('/', function *(next) {
  this.body = "hello world"
 })
);

https.createServer(options, app.callback()).listen(port);
console.log('Server running at https://127.0.0.1:' + port);

Nodejs を harmony オプションで起動します。

$ node -v 
v0.11.12
$ node -harmony koa_https_example.js 

ブラウザで接続すると、接続の安全性を確認できません等の警告が出ますが無視して接続すると hello world が表示されます。