Hatena::ブログ(Diary)

130単位

2011-05-26

Rails3でSSL Requirementを使う

Rails3でSSL対応可能にするライブラリです。forkされたもののようです。

Powは現時点ではSSLには対応していない*1ので、Passengerでローカルでの動作確認をしました。

環境

使いかた

Gemfile
gem 'bartt-ssl_requirement'

これでbundle installによりインストールはされますが、動きません

Routing Error

uninitialized constant SslRequirement

このようなエラーになります。正しい記述は以下です。

gem 'bartt-ssl_requirement', :require => 'ssl_requirement'

ruby - Alternative for ssl_requirement plugin for Rails 3? - Stack Overflow

ライブラリ本体との名前が異なるため、「:require」を追加する必要があります。これがわからなくてしばらく悩みました。

Controller
class ApplicationController < ActionController::Base
  include ::SslRequirement
end

class AccountController < ApplicationController
  ssl_required :signup, :payment
  ssl_allowed :index

  def signup
    # SSLアクセスのみ
  end

  def payment
    # SSLアクセスのみ
  end

  def index
    # SSL/通常アクセスどちらも可
  end

  def other
    # 通常アクセスのみ
  end
end

ApplicationControllerでSslRequirementをincludeして、各Controllerでアクションを指定すればokです。

Apache+PassengerSSL

MacPortsApacheであればデフォルトで有効になっていると思われますが、SSLモジュールmod_sslが必要です。鍵と証明書の作り方は以下参照ください。

Passengerと80番ポートの設定は済んでいるものとして、以下SSLを動作させる最小限の設定です。

Listen 443
NameVirtualHost *:443 #VirtualHostを複数利用する場合
<VirtualHost *:443>
    ServerName myapp.dev
    DocumentRoot "/path/to/myapp/public"

    SSLEngine on
    SSLCertificateFile "/opt/local/apache2/conf/server.crt"
    SSLCertificateKeyFile "/opt/local/apache2/conf/server.key"
</VirtualHost>

これで設定を再読込(sudo apachectl graceful)すればSSLの確認ができます。


ちなみにRails3.1からはもともとSSL対応になっているようです(アクションごとの振り分けはできないかも?)。


4774146633
Ruby on Rails 3 アプリケーションプログラミング

4873112567
Apacheセキュリティ

関連記事

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元