2011-10-18 4 views
8

私はSpringベースのWeb開発の初心者です。Spring 3.xでhttpsサイトを開発するには?

私たちのサイトは春に基づいており、現在はhttpベース(非常に安全ではない)です。 サイトはまだライブではないので、サーバーに通常のJSONリクエストでもログイン/パスワードを送信しており、主にJSP、UIデザイン、SQLクエリなどに焦点を当てています。

ここでは、最初のステップとしてhttpsに移行します。

私は、ウェブページやいくつかの春の本のどれも、Springがhttpsのセキュリティを提供するためにどのように使用できるかについて明確な答えはないようです。 上記を達成するのに手伝ってもらえますか?

私の質問が明確でない場合は教えてください。私はできるだけ早く詳細を追加しようとします。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan 
    base-package="console.controllerpkg" /> 

<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

</beans> 

事前のおかげで多くのことを次のように春-servlet.xmlがあり、今そのための唯一のコントローラがある

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation=" 
    http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
" 
id="WebApp_ID" version="2.5"> 

<display-name>Spring3MVC</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

<!--> Mapping for serving static web-content <--> 
<!--> The resources folder must be in parallel to WEB-INF <--> 
<!--> The mvc:resources gives "not bound" exception unless bound to a namespace as above for xmlns:mvc <--> 
<mvc:resources mapping="/resources/**" location="/resources/" /> 
<mvc:resources mapping="/scripts/**" location="/scripts/" /> 

</web-app> 

次のように

私たちのweb.xmlがあります!

P.S.あなたが私に春の良い例のサイト/本を勧めてもらえれば、大いに感謝しています。私が見たサイトや本のほとんどは理論に重点を置いていますが、ほとんど例はありません。それは私を少し混乱させてしまった。

答えて

12

デイブ氏によると、SSLを処理するようにコンテナを設定してから、そのコンテナにSpringアプリケーションをデプロイする必要があります。二つの異なるWebサイトは、http用とHTTPSのための1つをTomcat for SSL.

代わりの設定について学び、より柔軟に、あなたがfront your container using Apacheができ、enable SSL there.

+0

リンクありがとうございました。私は深夜から私のために明日彼らを通り過ぎます。今までに何が答えられたのかを再確認するだけで、わかりました: 1)春はSSLとは関係がありません。 2)TomcatでSSLを有効にする必要があります。 これらの2点をご確認ください。 回答ありがとうございました。 もしあなたが私を助けなかったら私は春を掘り続けるでしょう。 –

+0

正しいですが、springはHTTPまたはHTTPSを直接処理しません。それはtomcatやjbossのようなコンテナにデプロイされ、そのコンテナはSSLや通常のHTTPを扱うものです。これらのリクエストはSpringに渡され、処理されます。したがって、SSLを有効にする場合は、あなたのTomcatで行う必要があります。ご協力いただきありがとうございました。これは、人々がここで質問に答えてくれる大きな理由です! – nont

+0

答えのリンクはTomcat 5.5のためのリンクです。これはTomcat 7のリンクです:http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html – maxivis

4

SSLはSSLの設定に100%責任を負いません。そのためには、SSLを処理するためにコンテナ(jetty、tomcatなど)を設定する必要があります。

0

設定し、HTTPの1は、HTTPSサイトにだけリダイレクトを持っています。

3

ありがとうございました。 私は自分の記録目的のために行ったことを繰り返します。

まず、「Tomcat for SSL」についてnontが提供しているリンクは本当に役に立ちました。 私はそこにすべてのSSLとTomcatについて読むと、これは私がやったことです:

コマンドプロンプトで、次のように入力します のkeytool -genkey -alias tomcatに-keyalg RSA は、上記のコマンドは私のために必要ないくつかの簡単な質問をしました証明書。私はどこでも(デフォルトのパスワードである)尋ねられたところでパスワード 'changeit'を使用しました。

上記コマンドで仕上げで、それはCでキーストアファイル生成:/ DocumentsとSettings //をストア Iは、Tomcat/CONF/myKeyStore.jksに

このの.keystoreファイルをコピーしそしてIを添加conf/serverに従います。xml:

<Connector protocol="org.apache.coyote.http11.Http11Protocol" 
    port="8443" minSpareThreads="5" 
    maxSpareThreads="75" 
    enableLookups="true" 
    disableUploadTimeout="true" 
    acceptCount="100" 
    maxThreads="200" debug="5" 
    scheme="https" secure="true" SSLEnabled="true" 
    keystoreFile="${catalina.home}/conf/myKeyStore.jks" 
    keystoreType="JKS" keystorePass="changeit" 
    truststoreFile="${catalina.home}/conf/cacerts" 
    truststoreType="JKS" truststorePass="changeit" 
    SSLVerifyClient="require" SSLEngine="on" SSLVerifyDepth="2" 
    sslProtocol="TLS" /> 

これだけです。 次回は、私の古いhttpリンクが動作しなかったtomcatを実行しました。 それから、ポート番号が8443でloにhttpにsweet 's'を追加しようとしました!すべてが立ち上がり、再び走っていた。

すばらしいリンクがありません!

+1

私のウェブサーバは、私のサイトのセキュリティが完全であることを確かめることができますか?あるいは私は何か他のことをする必要がありますか?たとえば、私はすべてのマイページのデータを取得するためにAJAX呼び出しをたくさん作成します。そして、severは各ajax呼び出しにJSON応答を返します。それは大丈夫ですか?同様にログイン時にもJSON形式のユーザー名とパスワードを持つAJAX投稿要求が行われます。それは安全ですか? –

+1

URLが「https」で始まる場合、SSL対応のtomcatを経由するものはすべて暗号化されます。そのajaxかどうかは問題ではありません。あなた自身の証明書を生成したようですね?もしそうなら、あなたはプロダクションに行くときに「本当の」証明書を購入したいかもしれません。ユーザーのブラウザが自己署名証明書を使用しているウェブサイトに対して警告するからです。 – nont

関連する問題