1
0

More than 1 year has passed since last update.

自家製サーバー 〜オレオレ証明書を添えて

Last updated at Posted at 2022-04-22

概要

何気なく使っている「サーバー」を自分(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コマンドのオプションについては随時解説を入れていきます。自分でサーバーを立てることができるとなんだか嬉しいですね。何事も自分で作ってみることが大事だと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0