はじめに
Windows10にSSL通信のWebサーバを作るための備忘録
いつも忘れるのでメモ
必要なもの
- Windows10
- Webサーバ構築する
- nodejsインストール済
- nodejs : v12.13.1
- npm : 6.13.4
- ラズパイ
- オレオレ証明書(SSL証明書)を作る
オレオレ証明書を作る
$openssl genrsa 2048 > server.key
$openssl req -new-key server.key > server.csr
$openssl x509 -days 3650 -req-signkey server.key < server.csr > server.crt
Webサイトを作る
$mkdir hoge
$cd hoge
$npm init
$npm install express --save$mkdir ssl
$mkdir wwwroot
$touch wwwroot/test.html
$touch app.js
※sslディレクト配下にオレオレ証明書をコピー
PS C:\Users\user\nodejs\hoge>tree /f
フォルダー パスの一覧: ボリューム Local Disk
ボリューム シリアル番号は XXXX-XXXX です
C:.
│ app.js
│ package-lock.json
│ package.json
│
│
├─node_modules
│ ・・略・・
│
├─ssl
│ server.crt
│ server.csr
│ server.key
│
└─wwwroot
test.html
wwwroot/test.html
<!DOCTYPE html><html><head><title>TEST</title></head><body>Test</body></html>
app.js
"use strict";varexpress=require("express");varapp=express();app.use(express.static("wwwroot"));app.get("/",function(req,res){res.sendFile("wwwroot/index.html");});letport1=3000;letport2=3001;// http サーバvarhttp=require("http").Server(app);http.listen(port1,function(){console.log("\tサーバがポート%dで起動しました。モード:%s",port1,app.settings.env)});// https サーバvarfs=require("fs");varopt={key:fs.readFileSync("ssl/server.key"),cert:fs.readFileSync("ssl/server.crt"),passphrase:"password",// オレオレ証明書でのパスワードを書く};varhttps=require("https").Server(opt,app);// https サーバを立てるhttps.listen(port2,function(){console.log("\tサーバがポート%dで起動しました。モード:%s",port2,app.settings.env)});
動作確認
PS C:\Users\user\nodejs\hoge>pwd
Path
----
C:\Users\user\nodejs\hoge
PS C:\Users\user\nodejs\hoge>node app.js
サーバがポート3000で起動しました。モード:development
サーバがポート3001で起動しました。モード:development
ブラウザで以下サイトにアクセスできれば成功