2014-12-09 7 views
8

Non riesco a imporre una connessione SSL per un'app di rails in esecuzione su Heroku (regione UE).Force SSL per le app Heroku in esecuzione nella regione UE

Ho aggiunto il CERT (inc Heroku SSL add-on) per un dominio personalizzato con successo (se affermo esplicitamente https: //..com funziona perfettamente)

Ma io voglio reindirizzare tutto http richiede una connessione https.

Per le applicazioni nelle regioni degli Stati Uniti, è necessario indicare record DNS del dominio personalizzato su .herokussl.com NOT .herokuapp.com. Documenti: https://devcenter.heroku.com/articles/ssl-endpoint#dns-and-domain-configuration

Per le app nelle regioni dell'UE, i record DNS personalizzati devono comunque puntare a .herokuapp.com che non sembra applicare una connessione SSL per impostazione predefinita.

Pertanto, la mia domanda è: come posso fare in modo che tutte le connessioni alla mia app Heroku in esecuzione in Europa siano forzate a funzionare attraverso SSL?

risposta

25

production.rb

Rails.application.configure do 
    config.force_ssl = true 
end 

Questo reindirizzerà tutto il traffico http a https

Modifica: Vale la pena notare che questa è una cosa Rails, piuttosto che un Heroku uno.

Revisione:

Come questa risposta/domanda regolarmente viene visto e upvoted, vale la pena notare che questo è possibile anche all'interno di un controllore su una per ogni richiesta basi:

class AccountsController < ApplicationController 
    force_ssl if: :ssl_configured? 

    def ssl_configured? 
    !Rails.env.development? 
    end 
end 
+0

Questo è quello che sto cercando. Grazie! –

1

FYI tua domanda menzioni herokussl.com che fa parte del deprecato servizio Heroku SSL Endpoint. Heroku ora consiglia di utilizzare il servizio Heroku SSL:

L'endpoint SSL aggiuntivo è consigliato solo se è necessario supportare client browser legacy che non supportano SNI. Il nostro consiglio di default è di utilizzare SSL Heroku descritto in this document.

Si noti inoltre che appname.herokuapp.com domini sono già abilitato SSL ed è possibile accedervi tramite https, ad esempio, https://appname.herokuapp.com.