nodejs

http-serverコマンドでHTTPS、CORSサーバをたてる

投稿日:

「フロントエンドをHTTPS化してHTTP公開しているREST APIに接続したい、でも自分のPCにApacheやNginxを入れてHTTPS化するのは面倒くさい」

開発中ってこういうニーズと悩みが結構多いです。HTTPS環境化でないと動かないHTML5 APIが増えてきたことで、さらに需要が増してきた感があります。

HTTPサーバ機能を提供してくれるソフトウェアは数あれど、Nodeモジュールのhttp-serverはこういったアドホックなニーズに簡単にマッチしてくれます。

SSL化する為のファイルを一度作ってさえしまえば、HTTPS開発環境を簡単に作れるようになります。

http-serverコマンドとは

必要最低限、かつ十分なHTTPサーバを起動する為のオーソドックスなNodeモジュール。

https-serverコマンドで起動したHTTPSサーバの後ろに別サーバのREST APIがいる想定で起動します。

サーバ証明書を作る

どんなに簡単にHTTPSサーバ起動出来るソフトウェアでもCA証明書、サーバ証明書、サーバ秘密鍵は作っておく必要があります。

opensslを使って以下の3ファイルを作っておきます。最初は大変ですが、同じPCをサーバにするなら何度でも使いまわせるので一度作り置きしておくと便利に使えます。

  1. CA証明書:cacert.crt(OSにインストールしておく)
  2. サーバ秘密鍵:nopass_server.key
  3. サーバ証明書:server.crt

オプションに証明書、鍵ファイルを指定してhttp-serverコマンドを実行

http-server -p 80 -c0 -P http://localhost:8080/ \
  --cors --ssl --key c:\openssl2\nopass_server.key \
  --cert c:\openssl2\server.crt

コマンド起動後、80ポートで起動したHTTPSサーバから8080ポートのRESTサーバにSOP(Same Origin Policy)違反することなく通信出来るようになります。

-nodejs
-,

執筆者:

関連記事

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(2)

目次1 目的1.1 動作イメージ2 Jenkinsジョブを設定2.1 前提2.2 Jenkins「シェルの実行」を設定2.3 想定外ライセンスが含まれていた場合の通知3 まとめ 目的 前回の続き。On …

podmanとNode.js公式コンテナイメージでnodeコマンドを使う

REHL8(CentOS8)からデフォルトインストールされるようになったpodmanでnodeコマンドが使える環境を作ってみます。 目次1 環境2 やること3 Node.jsイメージの導入4 コンテナ …

Mac、Linux、Windows(WSL無し環境)でNode.jsバージョン切り替え方法を統一したい

一時期ローカルPCにインストールされたNode.jsのバージョンを切り替えるツールが乱立してどれを選べばいいの状態で、当然オプションも違うのでOSによって違うツールが入っているとオプションを覚えるのが …

Nodeアプリが依存するnpmモジュールライセンスをlicense-checker & Jenkinsで自動チェック(1)

目次1 目的2 使用するnpmモジュール3 ライセンスを表示してみる3.1 サマリで出す3.2 CSVファイルで出す4 まとめ 目的 ionicやNode.jsアプリが依存するライブラリにライセンス違 …

Angular4.4のHTTP通信処理にタイムアウトを設定をすると「timeout is not a function」エラーが発生する

目次1 事象2 原因3 対処4 まとめ 事象 Angular4.3で追加されたHttpClientModuleに移行せず、HttpModuleを使い続けているアプリで、とある理由からpackage-l …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。