2010-01-23 41 views
12

Was muss ich tun, um Zugriffe auf meine App "ruby on rails" zu erhalten, um https zu verwenden? Ich habe ein Zertifikat installiert und wenn ich beim Zugriff auf die Site manuell "https: //" in die Adressleiste eintippe, erscheint das kleine Schloss-Icon, aber nur manuell zu www.example-app.com in meinem Browser zu gelangen, sendet Traffic über http : //.SSL mit Ruby on Rails

Gibt es eine einzeilige Konfiguration oder ist es komplizierter? Ich musste mich vorher nie mit SSL auseinandersetzen, also entschuldige mich, wenn ich mich so anhörte, als wüsste ich nicht, was los ist.

Ich hosste bei MediaTemple in einem (gs), wenn das wichtig ist oder jemand Erfahrung mit einem solchen Setup hat.

Antwort

14

Schauen Sie sich die ssl_requirement gem.

Damit können Sie in Ihre Controller festlegen, welche Aktionen sollten über https und können, welche Aktionen bedient werden über https serviert werden. Es kümmert sich dann um das Umleiten von http zu https und umgekehrt.

Aus der Dokumentation:

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 Ihr Link ist völlig unabhängig von SSL – lulalala

+0

Ja, es scheint, als ob sich die Wissensbasis geändert hat, nicht wahr? Ich werde es entfernen. –

6

Ruby on Rails ist ein Anwendungsframework und kein Webserver. Die HTTPS-Konfiguration, die Sie ändern müssen, befindet sich in Ihrer Webserver-Konfiguration (Apache, nginx usw.).

+0

Okay, ich wusste das sehr. Ich denke, dann bin ich neugierig, wie ich diese Einstellung ändern kann. Wo wäre das? Zumindest ist es ein Forschungsvorsprung. Ich werde herum Apache und Mongrel Config-Dateien stöbern. –

+0

müssen Sie den Mischling nicht ändern. Nur Apache-Konfigurationsdatei. Ich denke, die Standard-Konfigurationsdatei enthält HTTPS-Konfiguration, aber es ist standardmäßig deaktiviert. Sehen Sie sich auch den nginx-Webserver an (weniger Ressourcen, einfacher zu konfigurieren). – Zepplock

3

Es ist ziemlich einfach, und Sie nicht über ein Juwel für sie brauchen. Ich habe gebloggt, wie man ohne www in Schienen here umleiten kann. Die Umleitung zu https ist (fast) genau das Gleiche.

Wenden Sie Ihren before_filter auf alles an, was Sie hinter der SSL-Sicherheit sicherstellen möchten. Ich bin normalerweise einer für Code-Wiederverwendung und Edelsteine, aber dieser ist lächerlich einfach. Lesen Sie mehr über request.protocol. (Beachten Sie, dass in der Ruby 1.9.3/Rails 3.2-Umgebung, der Name ist request.fullpath; in einigen früheren Versionen war es request.request_uri, siehe die Release Notes, etc.)

+0

Würde dies nicht zu Problemen in einer Entwicklungsumgebung führen? Es sei denn, Sie abstrahieren auch den example.com-Teil? – jerhinesmith

+0

@jerhinesmith Bearbeitet, fester Codebeispiel –

+0

Hat request.request_uri Methodennamen geändert? Es ist nicht in meiner Ruby 1.9.3/Rails 3.2-Umgebung definiert. –