LoginSignup
1
0

More than 5 years have passed since last update.

ring-jetty-adapterで開発用HTTPSファイルサーバーを作る

Last updated at Posted at 2017-08-11

開発時にファイルをhttps経由で配信する必要があったため調べて実装した物をメモする。

前提

  • Java/Clojureの開発環境がインストールされている
  • 今回は[ring/ring-core "1.6.2"]を使用した

keystoreを作る

以下を実行するとhttpsに必要な公開鍵、秘密鍵の情報が含まれるkeystoreを生成することができる。

詳細な手順

 keytool -keystore keystore -alias jetty -genkey -keyalg RSA

ファイルを配信するring-middleware

ringに標準で入っているfileミドルウェアを使用すると指定したディレクトリ以下のファイルを配信することができる。

HTTPS用にサーバーを設定する

今回はringに標準で含まれているring-jetty-adapterを使用する。

(require '[ring.adapter.jetty :as j]
         '[ring.middleware.file :as rf])

(def jetty
    (j/run-jetty
     (rf/wrap-file identity ;;ファイルの配信しかしないので何もしないハンドラ
                   "." ;;プロジェクトルートディレクトリ以下を配信したい
                   )
     {:host "localhost"
      :http? false ;;httpが不要なため
      :ssl? true ;;httpsを有効にする
      :ssl-port 9443 ;;任意の値
      :keystore "keystore" ;;最初に作成したkeystoreへのパス
      :key-password "password";;keystore作成に使用した値
      :join? false ;; 起動後、REPLにコントロールが戻ってくる
      }))

感想

以前はPythonに付属してたhttpsサーバーモジュールを使用していたが、Clojure/Javaだけで手軽に完結できるので嬉しさを感じた。

1
0
0

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
1
0