SSL

2010-01-23 37 views
12

https kullanmak için raylar uygulamasında benim rubyuma trafik almak için ne yapmalıyım? Sertifika yüklendim ve siteye erişirken adres çubuğuna el ile "https: //" yazdığımda küçük kilit simgesi belirir, ancak tarayıcımda yalnızca www.example-app.com adresine gidip http üzerinden trafiği gönderir : //.SSL

Bazı tek satırlı yapılandırma var mı yoksa daha karmaşık mı? Daha önce hiç SSL ile uğraşmak zorunda kalmamıştım, bu yüzden ne olduğunu bilmiyorum gibi ses çıkarsam özür dilerim.

MediaTemple'de bir (gs) programında yaşıyorum, eğer önemli olan veya böyle bir kurulum deneyimi olan herkes.

cevap

14

ssl_requirement gem'e göz atın.

Bu eylemler üzerinden sunulan https ve hangi eylemlerin https üzerinden servis edilebilir olmalıdır denetleyicileri içinde belirtmenizi sağlar. Daha sonra, http den https'ye ve tersi yönlendirme ile ilgilenir. belgelerine

:

class ApplicationController < ActiveRecord::Base 
    include SslRequirement 
end 

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

    def signup 
    # Non-SSL access will be redirected to SSL 
    end 

    def payment 
    # Non-SSL access will be redirected to SSL 
    end 

    def index 
    # This action will work either with or without SSL 
    end 

    def other 
    # SSL access will be redirected to non-SSL 
    end 
end 
+0

@AustinFitzpatrick Bağlantınız tamamen SSL ile bağlantılı değil – lulalala

+0

evet, sanki bilgi tabanı değişmiş gibi görünüyor, öyle değil. Onu kaldıracağım. –

6

Ruby on Rails bir uygulama çerçevesi değil, bir web sunucusudur. Değiştirmeniz gereken HTTPS yapılandırması web sunucunuzda (Apache, nginx, vb.) Yapılandırılmıştır.

+0

Tamam, bunu çoktan biliyordum. Sanırım o ayarın nasıl değiştirileceğini merak ediyorum. Bu nerede olurdu? En azından bir araştırma lideri. Apache ve mongrel konfigürasyon dosyaları etrafında kurcalayacağım. –

+0

, melez değiştirmek zorunda değilsiniz. Sadece Apache yapılandırma dosyası. Varsayılan yapılandırma dosyasının HTTPS yapılandırmasını içerdiğini, ancak varsayılan olarak devre dışı olduğunu düşünüyorum. Ayrıca nginx web sunucusunu kullanarak daha az kaynak kullanır, daha kolay yapılandırır. – Zepplock

3

Oldukça kolay ve bunun için bir mücevher gerekmez. here numaralı raylarda www olmadan yönlendirmeyi nasıl bloglandırdım. https'a yönlendirmek neredeyse aynıdır.

class ApplicationController < ActionController::Base 
    before_filter :redirect_to_https 

    def redirect_to_https 
    redirect_to "https://example.com#{request.fullpath}" if !request.ssl? && request.host != "localhost" 
    end 
end 

Before_filter'ınızı SSL güvenliğinin arkasında tuttuğunuzdan emin olmak istediğiniz herhangi bir şeye uygulayın. Genelde kod yeniden kullanımı ve mücevherler için kullanıyorum, ama bu gülünç derecede basit. request.protocol hakkında daha fazla bilgi edinin. (Yakut 1.9.3/Raylar 3.2 ortamında, isim request.fullpath olduğunu unutmayın; daha önceki bazı sürümlerinde, bu request.request_uri vardı; sürüm notlarına bakın, vs.)

+0

Bu, geliştirme ortamında sorunlara neden olmaz mıydı? Ayrıca example.com bölümünü de soyutlamadığınız sürece? – jerhinesmith

+0

@jerhinesmith Düzenlendi, sabit kod örneği –

+0

Has request.request_uri, yöntem isimlerini değiştirdi mi? Ruby 1.9.3/Rails 3.2 ortamımda tanımlanmadı. –