こうこく
作 ▸

Node.js http-serverをhttpsで動かす

これのことね

http-server - npm

http-server 14.1.1OpenSSL 1.1.1

やりかた

以下コマンドで起動すればOK

npx http-server --tls true --cert {証明書ファイルの場所} --key {秘密鍵ファイルの場所}

これで https://localhost:8080 にアクセスできる (ポートは初期値)

オレオレ証明書と秘密鍵の作り方

Linuxなら以下コマンドで自己署名証明書を作れます (有効期限10年)

openssl genrsa 2048 > private.key
openssl req -new -key private.key > server.csr -subj "/CN=localhost"
openssl x509 -days 3650 -req -signkey private.key < server.csr > server.crt

カレントディレクトリに作成された private.key が秘密鍵ファイル、server.crt が証明書ファイルです

server.csr は証明書署名要求ファイルなので削除して大丈夫

もちろん自己署名証明書なので、これで立ち上げた http-server にブラウザでアクセスしようとすると警告が表示されます

Windowsでできる?

少し調べたけど、今のところWindows標準の機能だけじゃ無理っぽい

PowerShellで、証明書ストアに自己署名証明書を作るだけなら New-SelfSignedCertificate コマンドでできるし、それで作った証明書をpfx形式でエクスポートするだけなら certutil コマンドでできるんだけど、結局そこからPEM形式で証明書と秘密鍵を取り出すにはOpenSSL for Windowsが必要らしい

だったらもうOpenSSL for WindowsかWSLを導入して普通に証明書作った方が速いです

Windows OSで、証明書や秘密鍵をPEM形式に変換してエクスポートする:Tech TIPS(1/2 ページ) - @IT

New-SelfSignedCertificate (pki) | Microsoft Learn

IIS の SSL 証明書を PFX から PEM フォーマットへ変換する手順

この記事に何かあればこちらまで (非公開)