node.js | HTTPSサーバーの作り方

node.jsを用いてHTTPSサーバーを構築する手順について説明します。node.jsでHTTPSサーバーを構築するのに最も大切なこと、それは鍵ファイルの生成です!!

HTTPSとはwebサーバーとWebブラウザの間の通信が暗号化されているものです。そのため暗号化するための鍵ファイルが必要になります。

node.jsによるHTTPSサーバーは以下のソースで実装できます。

 

ポイント

  1. node.jsによるHTTPSサーバーの構築には秘密鍵ファイルとデジタル証明書ファイルを指定する必要があります(3 ~ 6行目)
  2. 鍵ファイルの指定でミスをしてしまうとサーバーは立ち上がってもアクセスすると以下のような画面がでてしまいます(鍵が問題だと気づくのに半日かかったw) 

f:id:pgpg-sou:20140307130200p:plain

opensslによる鍵ファイルの作り方

ということで半日苦しんだ鍵ファイルの生成方法について詳しく説明します。生成しなければならない鍵ファイルは3種類です。鍵ファイルを自動で生成してくれる便利なツールとかあるらしいのですが、勉強のため「openssl」というコマンドを使用して生成しました。

秘密鍵の生成

opensslコマンドを使用して以下のコマンドで生成可能である。

$ openssl genrsa -aes128 1024 > server.key

genrsa

 RSA形式の秘密鍵を生成します。

-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

 秘密鍵ファイルの指定

 

参考文献

Apache/SSL自己証明書の作成とmod sslの設定