2011-10-18 14 views
8

Yay tabanlı web geliştirmede yeni başlayan biriyim.Spring 3.x ile https site nasıl geliştirilir?

Sitemiz Yaylıdır ve şu anda http tabanlı (oldukça güvensizdir). Sitemiz henüz yayında değil, sunucuya normal bir JSON isteğiyle de giriş/şifre gönderiyor ve çoğunlukla JSP, UI tasarımı, SQL sorguları vb. Odaklanıyoruz.

Artık odaklanmak istiyoruz güvenlik ve ilk adım olarak https'ye geçiş.

Hayır okudum. web sayfalarının ve bazı bahar kitaplarının hiçbiri, ancak Spring'in https güvenliğini sağlamak için nasıl kullanılabileceğine dair net bir cevap sunmuyor gibi görünüyor. Birisi, yukarıdakilere ulaşmada bana yardımcı olabilir mi?

Sorumu açıklamama izin verin. Daha fazla bilgi ASAP eklemek için çalışacağız.

<?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> 

peşin bir sürü şu şekildedir: ilkbahar-servlet.xml olduğunu şu anda yalnızca bir tane kontrolör var

<?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> 

şu şekildedir:

Bizim web.xml olduğunu !

P.S. Bana ilkbaharda iyi bir örnek tabanlı site/kitap önerebilirseniz, çok takdir edilecektir. Gördüğüm sitelerin/kitapların çoğu teori üzerinde çok durulmasına karşın çok az örnek veriyor. Bu beni biraz şaşırttı.

cevap

12

Dave'in dediği gibi, kapsayıcınızı SSL'yi sunmak için yapılandırmanız ve ardından yaylı uygulamanızı bu kaba dağıtmanız gerekir. İki farklı web siteleri, http diğeri https için bir tane Tomcat for SSL.

dönüşümlü yapılandırma hakkında bilgi ve daha esnek sen front your container using Apache can ve enable SSL there.

+0

Bağlantılar için teşekkürler not. Yarın geceden beri benim için onlardan geçeceğim. Sadece şu ana kadar cevaplanmış olanları yeniden doğrulamak için şunu anladım: 1) Baharın SSL ile hiçbir ilgisi yoktur. 2) SSL, Tomcat'te etkinleştirilecek. Lütfen bu iki noktayı onaylayın. Cevaplarınız için çok teşekkürler. Bana yardım etmemiş olsaydınız Spring'i kazmaya devam ederdim. –

+0

Doğru, yay HTTP veya HTTPS'yi doğrudan işlemiyor. Tomcat veya jboss gibi bir konteynere dağıtılır ve bu konteyner SSL veya normal HTTP ile ilgilenen şeydir. Bu istekler daha sonra işlemek için Bahar'a iletilir. Yani, evet, SSL'yi etkinleştirmek istiyorsanız, bunu tomcat'inizde yapmalısınız. BTW, yardımcı olduysa lütfen bu cevabı onaylayın ve/veya doğru olarak işaretleyin. Buradaki insanlar sorulara cevap vermeyi çok istiyorlar! – nont

+0

Yanıtdaki bağlantı Tomcat 5.5 içindir, bu Tomcat 7'nin bağlantısıdır: http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html – maxivis

4

SSL, SSL yapılandırmasından% 100 sorumlu değildir. Bunun için SSL işlemek için kapsayıcı (iskelet, tomcat, vb.) Yapılandırmanız gerekir.

0

yapılandır, http tek https sitesine sadece bir yönlendirme olacak .

3

Tüm yardımcılar için teşekkürler. Sadece kendi kayıt amaçlarım için yaptığım şeyi yeniden yazacağım.

Her şeyden önce, 'Tomcat for SSL' ile ilgili olmayanlar tarafından sağlanan bağlantı gerçekten yardımcı oldu. tüm SSL ve orada Tomcat hakkında okumak ve bu benim yaptığım budur:

komut istemine On

girin: keytool -genkey -Alias ​​erkek kedi -keyalg RSA Yukarıdaki komut bana için gerekli bazı basit sorular sertifika. Sorulan her yerde 'changeit' şifresini kullandım (varsayılan şifre buydu).

yukarıdaki komutla bitirme On

, bu C bir anahtar deposu dosyasını oluşturulan:./Documents and Settings // deposu Ben bu .keystore dosyasını tomcat/conf/myKeyStore.jks

Sonra ekledi kopyalanan conf/server'a kadar.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" /> 

Ve işte bu !! Bir dahaki sefere tomcat koştum eski http bağlantım işe yaramadı. Ardından, 8443 numaralı port numarasıyla http 'a' tatlısı eklemeyi denedim. her şey tekrar çalışıyordu.

Harika bağlantı için teşekkürler!

+1

Sadece bir son şey, SSL'yi etkinleştirdikten sonra web sunucum, sitemin güvenliği tamamlandığından emin olabilir miyim? Yoksa başka bir şey mi yapmam gerekiyor? Örneğin, tüm sayfalarım için veri almak için çok sayıda AJAX araması yapıyorum. Ve önem, her ajax çağrısına JSON yanıtlarını döndürür. Bu iyi mi? Aynı zamanda giriş sırasında JSON formatında kullanıcı adı ve parola ile bir AJAX posta isteği yapılır. Bu güvenli mi? –

+1

ssl etkin tomcat'inizden geçen herhangi bir şey, URL "https" ile başlıyorsa şifrelenecektir. onun ajax olup olmadığı önemli değil. Belki kendi sertifikanızı oluşturmuş gibi geliyor? eğer öyleyse, üretime gittiğinizde "gerçek" bir sertifika almak isteyebilirsiniz. Daha güvenli olmayacaktır, çünkü sadece kullanıcılarınız tarayıcıları kendileriyle imzalı sertifikalar kullanarak web sitelerine karşı uyarırlar. – nont

İlgili konular