Skip to content

Instantly share code, notes, and snippets.

@yobukodori
Last active November 11, 2017 22:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yobukodori/c1dd9e0f34956a96928ecb166e03b294 to your computer and use it in GitHub Desktop.
Save yobukodori/c1dd9e0f34956a96928ecb166e03b294 to your computer and use it in GitHub Desktop.
Windowsで簡単軽量SSL対応Webサーバーを手軽に立ててローカルでHTTPS運用する(スクリプトテスト用にCaddyで)

Windowsで簡単軽量SSL対応Webサーバーを手軽に立ててローカルでHTTPS運用する(スクリプトテスト用にCaddyで)

【注:この記事は今後ブログで保守します。Snip2Codeにある私の記事やその他コードは私が投稿したものではなくSnip2Codeが勝手に転載したものです】

javascriptファイルをローカルに置いて手直ししながら色々なサイトにロードしてテストしたいのだが、httpsサイトだとhttpサーバーに置いたスクリプトは混在アクティブコンテンツとしてブラウザに蹴られる。でWindowsでhttpsサーバーをローカル(127.0.0.1)運用することにした。

IISとかApacheとか大げさなサーバーはいらないしSSL証明書だの面倒なこともしたくない。何か簡単に立てられて軽量なサーバーはないかと探したらCaddyというのがあった。CaddyはサーバーやSSLの知識がほとんどなくても簡単にhttpsサーバーを立てられる。

以下にCaddyによるローカルhttpsサーバー立ち上げの手順を失敗談を交えて紹介する。

  1. ドメイン名を用意する。ダイナミックDNSのドメイン名で構わない。以下 mydomain.com とする
  2. web サーバー Caddy をダウンロードする。zip なので適当なところに展開する。以下 c:\caddy に展開したものとする
  3. サーバーで公開するファイルを置くディレクトリを用意する。以下 c:\www とする
  4. Caddy の設定ファイル Caddyfile を作成して c:\www に置く。Caddyfile はテキストファイルで1行目に mydomain.com と書いておく
mydomain.com
  1. ポート 80 と 443 を開放して外部から Caddy に接続できるようにする
  2. mydomain.com に Caddy に接続するための IP アドレスを設定する
  3. コマンドプロンプトを開く
  4. c:\www に移動する
c:\users\foo>cd c:\www
  1. c:\caddy にパスを通す
c:\www>path %path%;c:\caddy
  1. caddy を起動しSSLサーバー証明書を取得させる。 Caddy はポート80と443をリッスンしつつ Let's Encrypt のサービスに接続し証明書を取得する。 途中メールアドレスの入力を求められるが任意
c:\www>caddy
Activating privacy features...
Your sites will be served over HTTPS automatically using Let's Encrypt.
By continuing, you agree to the Let's Encrypt Subscriber Agreement at:
  https://acme-v01.api.letsencrypt.org/terms
Please enter your email address so you can recover your account if needed.
You can leave it blank, but you'll lose the ability to recover your account.
Email address: xxx@xxx.com
2017/10/18 13:45:39 [コンピュータ名] failed to get certificate: acme: Error 400 - urn:acme:
error:malformed - Error creating new authz :: DNS name does not have enough labels

c:\www>

最初よく分からずドメイン名を書くべきところにコンピュータ名を書いて上記のようなエラーで証明書の取得に失敗した。 さらにドメイン名は正しく書いたがポートを適切に開放できていなかったために失敗した。その時のメッセージを以下に示す。

c:\www>caddy
Activating privacy features...
2017/10/18 15:35:16 [mydomain.com] failed to get certificate: acme: Error 400 - urn:acme:
error:connection - Timeout
Error Detail:
		Validation for mydomain.com:443
		Resolved to:
				1**.\*\*.**.253
		Used: 1**.\*\*.**.253

c:\www>

下はようやく成功したときのメッセージ。最初の時のようなメッセージは出なかった

c:\www>caddy
Activating privacy features... done.
https://mydomain.com
http://mydomain.com

これで証明書の取得に成功してサーバーが稼働している。Ctrl+C で caddy を終了させる

  1. 証明書さえ取得すればローカルでの運用にはポートを開放しておく必要はないのでポート 80 と 443 を閉じる
  2. テキストエディタを管理者として実行し %windir%\system32\drivers\etc\hosts ファイルを開き次の1行を追加して保存する
       127.0.0.1       mydomain.com
  1. 以上でローカルに SSL 対応 HTTPサーバーが出来た。必要な時に caddy を起動してブラウザでhttps://mydomain.com/anyscript.jsにアクセスすれば c:\www にある anyscript.js を読み込み実行できる
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment