2013-07-21 12 views
11

私は最近Herokuで実行しているRailsアプリケーションのドメインを変更しました。元のものを新しいものにリダイレクトし、最後の2ヶ月間は両方でSSLを実行していました。元のドメインからSSLを削除しようとしたのは、リダイレクトだけだったからです。HerokuアプリケーションのSSLを無効にする

私は私がすべきと思ったすべてをやった:を "myapp.herokuapp.com" を指すように変更DNSエイリアスとCNAME

  • production.rbにconfig.force_ssl = falseとアプリでSSLをオフにして

    • 削除SSLエンドポイントとは、certsの

    私はmyapp.herokuapp.comに行けば、すべてが正常であるが、私はmyapp.comに行く場合、またはwww.myapp.comそれは自動的に私を取るしようとします安全なバージョンhttps://myapp.com、私のブラウザから標準のセキュリティエラーの警告が表示されます。

    何か不足していますか?キャッシングの問題ですか? DNSの変更が始まるまでに時間がかかりますか?私はいくつかのマシン/ブラウザで試してみましたが、問題はすべてのブラウザで一貫しています。

    最悪のケースでは、私は間違いなくSSLエンドポイントを追加することができますが、それは過度のようです。

  • 答えて

    12

    config.force_ssl = trueStrict Transport Securitymax-ageのヘッダー(HSTS)を有効にする。これはissueを参照してください。このようなヘッダーは、それをサポートするブラウザーに、HTTPS経由で1年間サーバーに接続するよう強制します。これは、途中の人がHTTPSへのHTTPS接続をダウングレードする攻撃を防ぐためです。

    HSTSで配信された本番サイトのHTTPSからの移動はあまり簡単ではありません。 HTTPS経由でサイトを維持し、max-age=0HSTSヘッダーを返して、1年間の設定をリセットする必要があります。問題は、HTTPSを維持する必要があるかどうかを判断することです。すべてのクライアントが確実に切り替わるようにするには、1年間それを行う必要があります。短期間で行うこともできますが、頻繁に訪問しているクライアントのサイトを壊す危険があります。

    +0

    ああ、それはそれを説明します。詳細な応答をありがとう! – Lev

    +0

    参考:設定を変更した後にブラウザがsslを使用するのを忘れるようにするには、次のような便利な点もあります。https://support.mozilla.org/en-US/questions/1027355これはもちろん自分のブラウザでしか動作しませんが(私の場合は、まだ誰ともURLを共有していません)。あなたのウェブサイトに既に訪問者がいたなら、これは彼らを助けません(彼らが彼らのコンピュータで同じことをしない限り)。 – Nick

    6

    Janが言ったことに加えて、私はこのトリックをやったのです。 application_controller.rbで

    :production.rb

    before_filter :expire_hsts 
    
    [...] 
    private 
        def expire_hsts 
        response.headers["Strict-Transport-Security"] = 'max-age=0' 
        end 
    

    config.force_ssl = false 
    

    をクリア、Webブラウザのキャッシュと、それはそれです!

    +0

    は私のためには機能しません。 "申し訳ございません。不具合が発生しました。"私のページに表示されます。 –

    関連する問題