LoginSignup
11
11

More than 5 years have passed since last update.

開発用にplackupで自己認証サーバを立ち上げる

Last updated at Posted at 2014-05-15

OpenSSLで鍵ペアと証明書を作成

パスフレーズなしの秘密鍵(server.key)を作成する。

$ openssl genrsa 2048 > server.key

公開鍵(server.csr)を作成する。
-subjの部分は必要に応じて編集する。

$ openssl req -new -key server.key -out server.csr -subj '/C=JP/ST=Tokyo/L=Tokyo/O=Example Ltd./OU=Web/CN=example.com'

証明書(server.crt)を作成する。

$ openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt

plackupコマンド

Plackに同封のHTTP::Server::PSGIでサーバを立ち上げる。
その際に、「ssl」「ssl-key-file」「ssl-cert-file」オプションで、
先ほど作成したファイルを指定してSSLを有効にする。

$ plackup -s HTTP::Server::PSGI --ssl-key-file server.key --ssl-cert-file server.crt --ssl 1 app.psgi
HTTP::Server::PSGI: Accepting connections at https://0:5000/

これで、httpsでListenするサーバが立ち上がる。

ヘッダの追加

ばあいによっては、
アプリに渡すヘッダにX-Forwarded-HTTPSのような情報を渡す必要が出てくる。
Mojoliciousでは、X-Forwarded-HTTPSを渡さないと、
リダイレクト処理が正常に動作しなくなる。

コマンドから追加する方法が見つからなかったので、
Plack::Builder内で以下のような感じで追加するようにした。

app.psgi
use Plack::Builder;
builder {
    enable sub {
        my $app = shift;
        sub {
            my $env = shift;
            $env->{"HTTP_X_Forwarded_HTTPS"} = 1;
            my $res = $app->($env);
            return $res;
        };
    };
    $app;
};

追記)
コマンドから追加する方法を見つけた。

以下のようなファイルを用意する。

httpxforwardedhttps.pl
enable sub {
    my $app = shift;
    sub {
        my $env = shift;
        $env->{"HTTP_X_Forwarded_HTTPS"} = 1;
        my $res = $app->($env);
        return $res;
    };
};

plackupの-eオプションで、このファイルの内容を渡すようにする。

$ plackup -e "`cat httpxforwardedhttps.pl`" -s HTTP::Server::PSGI --ssl-key-file server.key --ssl-cert-file server.crt --ssl 1 app.psgi
HTTP::Server::PSGI: Accepting connections at https://0:5000/

これで、アプリに手を入れずに、ヘッダを追加することができた。

参考

Apache+OpenSSLで簡単に自己認証したい
http://qiita.com/cs_sonar/items/81b30c7a1d86d729c7fc

11
11
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
11
11