5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker上に簡易HTTPSサーバを構築する(Node.js)

Posted at

HTTPSでデータのやりとりを確認したいときがあったので簡易的なHTTPSサーバを作成してみた。

環境

  • Docker
    • Version 18.03.1-ce-win65 (17513)
  • Node.js
    • v8.11.3
  • npm
    • 5.6.0
  • 使用Image
    • alpine

コンテナを作成する

docker run --name server -itd -p 8443:8443 alpine

001.PNG

コンテナ内にログインする

docker exec -it server /bin/ash

ashはalpineで使用されているシェル

002.PNG

必要なモジュールをインストールする

1.alpineのパッケージリポジトリから最新のインデックスを取得

apk update

003.PNG

2.Node.jsのインストール

apk add nodejs

004.PNG

3.npmのインストール

apk add npm

005.PNG

4.opensslのインストール(HTTPSの証明書作成に必要)

apk add openssl

006.PNG

作業用ディレクトリの作成

mkdir work
cd work

007.PNG

証明書ファイル(pfxファイル)の作成

openssl genrsa 2048 > mysslserver.key
openssl req -new -key mysslserver.key -subj "/C=JP/ST=Tokyo-to/L=Shibuya/O=Company Name/OU=IT dept./CN=Company Dept CA" > mysslserver.csr
openssl x509 -days 3650 -req -signkey mysslserver.key < mysslserver.csr > mysslserver.crt
openssl pkcs12 -export -inkey mysslserver.key -in mysslserver.crt > mysslserver.pfx

008.PNG

HTTPSサーバの作成

viで作成する。

https.js
https = require('https');
fs = require('fs');
port=8443;
https.createServer({pfx: fs.readFileSync('mysslserver.pfx')}, function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port);
console.log('Server running at port:' + port);

サーバの起動

node https.js

009.PNG

疎通確認

https:localhost:8443にアクセスしてHello Worldが表示されればOK

012.PNG

5
3
1

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?