node.js | HTTPSサーバーの作り方
node.jsを用いてHTTPSサーバーを構築する手順について説明します。node.jsでHTTPSサーバーを構築するのに最も大切なこと、それは鍵ファイルの生成です!!
HTTPSとはwebサーバーとWebブラウザの間の通信が暗号化されているものです。そのため暗号化するための鍵ファイルが必要になります。
node.jsによるHTTPSサーバーは以下のソースで実装できます。
ポイント
- node.jsによるHTTPSサーバーの構築には秘密鍵ファイルとデジタル証明書ファイルを指定する必要があります(3 ~ 6行目)
- 鍵ファイルの指定でミスをしてしまうとサーバーは立ち上がってもアクセスすると以下のような画面がでてしまいます(鍵が問題だと気づくのに半日かかったw)
opensslによる鍵ファイルの作り方
ということで半日苦しんだ鍵ファイルの生成方法について詳しく説明します。生成しなければならない鍵ファイルは3種類です。鍵ファイルを自動で生成してくれる便利なツールとかあるらしいのですが、勉強のため「openssl」というコマンドを使用して生成しました。
- 秘密鍵
- 公開鍵
- デジタル証明書
秘密鍵の生成
opensslコマンドを使用して以下のコマンドで生成可能である。
$ openssl genrsa -aes128 1024 > server.key
genrsa
-aes128
128ビットのAES方法で暗号化します。
1024
1024バイトの鍵を生成する
公開鍵の生成方法
以下のコマンドを実行して公開鍵を生成するための情報を入力します。
$ openssl req -new -key server.key > server.csr
req
公開鍵を生成します。
-key
秘密鍵が書いてあるファイルを指定します。
Country Name (2 letter code) [AU]: | 国名 |
State or Province Name (full name) [Some-State]: | 都道府県 |
Locality Name (eg, city) : | 市区町村 |
Organization Name (eg, company) [Internet Widgits Pty Ltd]: | 組織名 |
Organizational Unit Name (eg, section) : | 部門名 |
Common Name (eg, YOUR name) : |
サイト名 |
Email Address : |
メールアドレス |
A challenge password : |
証明書を破棄する時に必要になるパスワード |
An optional company name : |
別の組織の名前 |
デジタル証明書の作成
$ openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
x509
X.509 形式のデジタル証明書を作成する
-in
公開鍵ファイルの指定
-days
証明書の有効期限を指定
-req
公開鍵ファイルがcsrであることを指定する
-signkey
秘密鍵ファイルの指定
参考文献