2012-02-16 5 views
0

私はheroku java app用にSSLを設定しようとしています。私はhttp://devcenter.heroku.com/articles/sslに続いてsecure.mydomain.comでSSLをセットアップしました。私がすればすべてがうまくいくhttps://secure.mydomain.com。しかし、heroku godaddy domain java stack SSL設定

1)httpトラフィックをhttpsに転送するにはどうすればよいですか?誰かがサンプルコードを共有できますか?つまり、私がhttp://secure.mydomain.comに行くと、https://secure.mydomain.comに私を転送する必要があります。

2)私はsecure.mydomain.comの証明書のみを持っています。すべてのトラフィックをhttps://secure.mydomain.comに転送するようgodaddyでwww.mydomain.comのCNAMEを設定できますか?

要するに、私はmydomain.com、www.mydomain.com、secure.mydomain.comへのすべてのリクエストをhttps://secure.mydomain.comに転送したいと思います。

ありがとうございます。

+0

あなたはどのフレームワークを使用していますか?桟橋は埋め込まれている? WAR + Tomcat/JettyランナーにコンパイルされたSpring MVC?その他? –

+0

Ditto Jesper。 Herokuはこれを行うための施設を提供していません。あなたはアプリケーションレベルでそれを行う必要があります。したがって、ソリューションは使用しているフレームワークによって異なります。 –

+0

WAR +桟橋ランナーにコンパイルされたSpring MVCを使用しています。 –

答えて

0

私はこのコードは少しアップprettiedすることができ、それはいくつかのコーナーケースを逃したが、ここhttpsにすべてhttpトラフィックをリダイレクトする汎用のサーブレットフィルタである可能性があると確信しています:

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class SecureFilter implements Filter { 

    public void init(FilterConfig arg0) throws ServletException {} 
    public void destroy() {} 

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
      throws IOException, ServletException { 

     HttpServletRequest hr = (HttpServletRequest) req; 
     HttpServletResponse hs = (HttpServletResponse) res; 

     if(req.isSecure() || 
      (hr.getHeader("X-Forwarded-Proto")!=null && 
      hr.getHeader("X-Forwarded-Proto").equals("https"))) { 
      chain.doFilter(req,res); 
     } else { 
      hs.sendRedirect("https://"+ 
          hr.getHeader("Host")+ 
          hr.getRequestURI()+ 
          (hr.getQueryString()!=null? "?"+hr.getQueryString():"")); 
     } 
    } 
} 

はあなたにそれを追加します。アプリをweb.xmlに挿入して:

<filter> 
    <filter-name>SecureFilter</filter-name> 
    <filter-class>SecureFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>SecureFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>