LoginSignup
2

More than 3 years have passed since last update.

[Node.js] Windows10にオレオレ証明書でSSL通信のWebサーバを作る

Last updated at Posted at 2020-03-20

はじめに

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

ブラウザで以下サイトにアクセスできれば成功

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2