概要
何気なく使っている「サーバー」を自分(OS:mac)で組み立ててみる。尚、今回はJavaScriptで話を進めて、server.js
ファイルに記述する。
使用モジュール
- Express
- fs
- log4js
- https
手を動かす
何事も自分で作ってみると理解が深まるもの。黙って考えてないで、詰まったら以下コマンドで逐一確認する。
node server.js
ディレクトリ構成
| - server.js
| - privatekey.pem
| - cert.pem
実装の前に
httpsって何?
node.jsでHTTPSサーバ(SSL)を作成するには、httpsモジュールを使用します。HTTPSサーバは、SSLにより、経路を暗号化し、サーバ-クライアント間の盗聴を防ぎます。また、サーバ証明書により、サーバの真正性を保証します。
OpenSSLって何?
OpenSSLは「SSL(Secure Sockets Layer)」という暗号化通信のためのプログラムです。今回のhttpsサーバーにおける秘密鍵と証明書の生成を担っています。
brew install openssl
OpenSSLで秘密鍵と証明書を発行
くれぐれも「オレオレ証明書」は本番環境では使用しないようにしましょう。
openssl genrsa -out privatekey.pem 2048
openssl req -batch -new -key privatekey.pem -out cert.pem \
-subj "/C=(Country Name)/ST=(State or Province Name)/L=(Locality Name)/O=(Organization Name)/OU=(Organizational Unit Name)/CN=(Common Name)"
openssl x509 -in cert.pem -out cert.pem -req \
-signkey privatekey.pem -days 73000 -sha256
作ってみる
server.js
const express = require("express");
const fs = require("fs");
var log4js = require("log4js");
const app = express();
const portNo = 3030;
const server = require("https").createServer(
{
key: fs.readFileSync("./privatekey.pem"),
cert: fs.readFileSync("./cert.pem"),
},
app
);
const logger = log4js.getLogger("server");
logger.level = "all";
server.listen(portNo, () => {
logger.debug("起動しました", `https://localhost:${portNo}`);
});
node server.js
で実行して上手くいきましたか?
まとめ
openssl
コマンドのオプションについては随時解説を入れていきます。自分でサーバーを立てることができるとなんだか嬉しいですね。何事も自分で作ってみることが大事だと思います。