Node.js + Express / HTTPS

Node.js と Express を使用した HTTPSSSL)通信の方法について確認しました。

検証環境

  • Node.js 0.8.14
  • Express 3.0.0rc5

確認は localhost でしか行っていません。なお、検証に使用した OS は Linux Mint 13 ですので証明書は pfx ではなく秘密鍵/公開鍵のペアです。IIS(Windows) の場合は pfx ファイルを用意し、Node.js のリファレンス(http://nodejs.jp/nodejs.org_ja/docs/v0.8/api/https.html)を参考にしてください。リファレンスを見る限りでは違いはオプションの部分だけのようです。


事前に OpenSSL で作成するなど、秘密鍵/公開鍵のペアを用意しておいてください。

モジュールの読み込み

var express = require('express');
var app = express();
var https = require('https');

秘密鍵/公開鍵の読み込み

var options = {
    key: fs.readFileSync('/path/to/privatekey'), // 秘密鍵
    cert: fs.readFileSync('/path/to/publickey'), // 公開鍵
};

configure

app.configure での設定は HTTP のときと違いはありません。

サーバ起動

HTTPS でサーバを作成し、リクエストリスナーに Express を設定します。

https.createServer(options, app).listen(3443);

Express を使用しない場合はリクエストリスナーに別のリスナーを設定することになります。リスナーの形式は function (request, response) で、リクエストに対して'hello world'を返す簡単なサンプルは次のとおりです。

https.createServer(options, function (request, response) {
    response.writeHead(200);
    response.end("hello world\n");
}).listen(3443);

参考

Node.js v0.8 APIリファレンス http://nodejs.jp/nodejs.org_ja/docs/v0.8/api/
Express APIリファレンス http://expressjs.com/api.html