ExpressのWebサーバーをオレオレHTTPS化する
express-generator
で作ったExpressアプリのWebサーバーをオレオレHTTPS化して、https://IPアドレス
のURLで呼び出せるようにしました。
express 4.16.4express-generator 4.16.0OpenSSL 1.0.2k-fips
オレオレ証明書を作る
オレオレ証明書を作ります。
適当な場所に key ディレクトリを作成して、その中に秘密鍵 private_key.pem
と、証明書 server.crt
を作りました。
mkdir key
cd key
openssl genrsa 2048 > private_key.pem
openssl req -new -key private_key.pem > server.csr
openssl x509 -days 3650 -req -signkey private_key.pem < server.csr > server.crt
サンプルのExpressアプリを用意する
express-generator
を使います。これをやると、カレントディレクトリに testapp
ディレクトリが作成されます。
npm install -g express-generator
express testapp
cd testapp
npm install
bin/www を書き換える
expressアプリ内に bin
ディレクトリがあるので、その中の www
ファイルを書き換えます。
25行目あたりの var server = http.createServer(app);
のあたりを以下の通りに変更しました。
//var server = http.createServer(app);
var fs = require('fs');
var https = require('https');
var options = {
key: fs.readFileSync('/path/to/key/private_key.pem'),
cert: fs.readFileSync('/path/to/key/server.crt')
};
var server = https.createServer(options, app);
この状態で npm start
すれば、起動したWebサーバーは、上で作ったオレオレ証明書でHTTPS化されてます。