Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

http-server の https 版の設定

以下の作業はWSLのUbuntu上で行っている。

概要

node.jsのhttp-serverは開発時に便利なのだが、httpsAPI に接続するときなど、https が使えればなと思うことは多い。http-serverによるローカル HTTPS server 構築 (5分でできる) - Qiita では、mkcert を使っているが、デフォで入っている openssl だけでも自己署名はできるので、そのコマンドと、~/.bashrc に設定すると便利なエイリアスを紹介する。

自己認証局で自己証明書を発行

基本は Ubuntu Server 18.04 LTS OpenSSL 自己認証局で自己証明書を発行 の前半部に書かれている通り。僕の環境の場合初めから、/etc/ssl/ 以下に cert と private というフォルダがあって、それを chown して使いまわすことにした。適宜自分で作ってもよい。

sudo openssl req -nodes -new -x509 -out /etc/ssl/certs/selfssl.pem -keyout /etc/ssl/private/selfssl-key.pem -days 36500

パスワード無しで作る際には nodes オプションが必須。あと、実行の際に説明があるが、名前などの情報は.を入力すれば空情報扱いになるし、それでよい。

https-server というエイリアスを設定する

~/.bashrc に以下のエイリアスを設定しておくと便利

alias https-server="http-server -c-1 . --ssl --cert /etc/ssl/certs/selfssl.pem --key /etc/ssl/private/selfssl-key.pem"

その他

  • let's encrypt も使っているので一括で証明書を管理すればとも思ったが、localhost 用の証明書を扱うようには作られていない Certificates for localhost - Let's Encrypt
  • はじめ digital envelope routines: EVP_DecryptFInal_ex: bad decrypt というエラーが出て、僕の場合の原因は-nodesを付けずにパスワード設定して鍵を作ったのに、http-server 呼ぶときにはパスワードを指定してなかったのが原因だった。パスワード付きにした場合はNODE_HTTP_SERVER_SSL_PASSPHRASEという環境変数にパスワードを設定する旨、http-party/http-server: a simple zero-configuration command-line http server の README に書いてあった。実は openssl のコマンドについても、nodes についても、ここにちゃんと書いてある。ググる前に公式文書読めって話でした。