Node.jsでHTTPSサーバーを起動する方法
Windows10+Node.jsでHTTPS(Hypertext Transfer Protocol Secure)サーバーを起動する方法です。
XAMPPでやろうと思ってたけど手順が複雑(´・ω・`)
調べてみるとNode.jsの方が簡単!てことで、Node.jsを利用しました。
前提条件
- OSはWindows10
- Node.jsインストトール済み
- Git Bashインストール済み
- ブラウザはGoogle Chromeを使用
Git BashはSSL証明書を作成するために使用します。
インストール方法はこちらの記事を参考にしてください。(Git for Windowsをインストール)
TortoiseSVNからTortoiseGitへの移行メモ
HTTPSサーバーの構築
SSL証明書の作成
- Node.jsインストールフォルダ配下に任意のフォルダを作成
- Git Bashで上記フォルダに移動し、以下のコマンドを実行
$ openssl genrsa -out server-key.pem 2048
$ openssl req -batch -new -key server-key.pem -out server-csr.pem -subj "//C=JP/ST=Osaka/L=Osaka-shi/O=Sample/OU=Dev1/CN=192.168.0.8"
$ openssl x509 -req -in server-csr.pem -out server-crt.pem -signkey server-key.pem -days 3650 -sha256
SSL証明書が作成されます。
設定項目の内容はこのようになっています。
試験サーバーなので適当でいいと思いますが、ひとまず設定。国名は無視されるようですがコマンドでは指定しました。
C | 国名 |
ST | 都道府県 |
L | 市区町村 |
O | 法人名 |
OU | 部署名 |
CN | サーバー名() |
HTTPSサーバーの作成
SSL証明書を作成したフォルダ内に、以下のファイルを作成します。test.html
には表示したいコンテンツを記述してください。
const https = require('https');
const fs = require('fs');
const sslServerKey = 'server-key.pem';
const sslServerCrt = 'server-crt.pem';
var options = {
key: fs.readFileSync(sslServerKey),
cert: fs.readFileSync(sslServerCrt)
};
var server = https.createServer(options,
(request, response) => {
fs.readFile('./test.html', 'UTF-8',
(error, data) => {
response.writeHead(200, {'Content-Type':'text/html'});
response.write(data);
response.end();
});
}
);
server.listen(3001);
console.log('server running...')
HTTPSサーバーの起動
- 以下のコマンドを実行する
node https.js
- Google Chromeで
https://localhost:3001/
にアクセス - 警告画面が出るので、詳細設定ボタンをクリック
- localhostにアクセスする(安全ではありません)をクリック
用意したコンテンツが表示されます。