はじめに
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";
var express = require("express");
var app = express();
app.use(express.static("wwwroot"));
app.get("/", function(req, res) {
res.sendFile("wwwroot/index.html");
});
let port1 = 3000;
let port2 = 3001;
// http サーバ
var http = require("http").Server(app);
http.listen(port1,function(){
console.log("\tサーバがポート%dで起動しました。モード:%s",port1,app.settings.env)
});
// https サーバ
var fs = require("fs");
var opt = {
key: fs.readFileSync("ssl/server.key"),
cert: fs.readFileSync("ssl/server.crt"),
passphrase: "password", // オレオレ証明書でのパスワードを書く
};
var https = 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
ブラウザで以下サイトにアクセスできれば成功