2011-10-18 12 views
8

Jestem początkującym programistą w branży internetowej.Jak stworzyć stronę https z wiosną 3.x?

Nasza strona jest oparta na wiosennej wersji i jest obecnie oparta na protokole http (tak bardzo niezabezpieczona). Ponieważ witryna nie jest jeszcze aktywna, wysyłamy login/hasło również poprzez normalne żądanie JSON do serwera i koncentrujemy się głównie na JSP, projektowaniu UI, zapytaniach SQL itp.

Teraz chcemy zmienić ostrość w sprawie bezpieczeństwa i przejdź na https jako pierwszy krok.

Czytałem nie. stron internetowych i niektórych książek wiosennych, ale żadna z nich nie daje jasnej odpowiedzi na pytanie, w jaki sposób Spring może być wykorzystany do zapewnienia bezpieczeństwa https. Czy ktoś może mi pomóc w osiągnięciu powyższego?

Proszę dać mi znać, jeśli moje pytanie nie jest jasne. Postaram się dodać więcej szczegółów JAK NAJSZYBCIEJ.

Nasz web.xml wygląda następująco:

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

Jest tylko jeden kontroler teraz dla których wiosna-servlet.xml jest następujący:

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

Bardzo dziękuję z góry !

P.S. Jeśli możesz polecić mi dobrą przykładową witrynę/książkę wiosną, byłoby to bardzo cenne. Większość stron/książek, które widziałem, kładzie duży nacisk na teorię, ale bardzo niewiele przykładów. To mnie trochę zdezorientowało.

Odpowiedz

12

Jak mówi Dave, musisz skonfigurować swój kontener, aby obsługiwał SSL, a następnie wdrożyć aplikację wiosenną do tego kontenera. Więcej informacji na temat konfigurowania Tomcat for SSL.

Naprzemiennie i bardziej elastycznie można front your container using Apache i enable SSL there.

+0

Dzięki za linki nont. Przejdę przez nie jutro od jego późnej nocy dla mnie. Aby ponownie potwierdzić, co zostało odebrane do tej pory, zrozumiałem, że: 1) Wiosna nie ma nic wspólnego z SSL. 2) Protokół SSL należy włączyć w Tomcat. Potwierdź te dwa punkty. Jeszcze raz dziękuję za odpowiedzi. Kontynuowałbym kopanie wiosny, gdybyście mi nie pomogli. –

+0

Prawidłowo, wiosna nie obsługuje bezpośrednio protokołu HTTP ani HTTPS. Jest on wdrażany w kontenerze, takim jak tomcat lub jboss, a ten kontener dotyczy protokołu SSL lub zwykłego protokołu HTTP. Żądania te są następnie przekazywane do Spring do obsługi. Tak więc, jeśli chcesz włączyć SSL, powinieneś zrobić to w swoim tomcat. BTW, proszę upvote i/lub zaznacz tę odpowiedź jako poprawną, jeśli była pomocna. To wielki powód, dla którego ludzie lubią odpowiadać na pytania tutaj! – nont

+0

Łącze w odpowiedzi dla Tomcat 5.5, jest to link do Tomcat 7: http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html – maxivis

4

Wiosna nie jest w 100% odpowiedzialna za konfigurację SSL. W tym celu należy skonfigurować kontener (pomost, tomcat, itp.) Do obsługi protokołu SSL.

0

Konfiguracja dwóch różnych stron internetowych, po jednym dla HTTP i jeden dla https, jeden dla http będą mieć tylko przekierowanie do strony https .

3

Dzięki za wszystkie pomocników. Będę powtórzyć to, co zrobiłem dla własnych celów.

Po pierwsze, link podany przez nont o "Tomcat dla SSL" był naprawdę pomocny. czytam wszystko o SSL i Tomcat tam i to jest to, co robiłam:

W wierszu polecenia wpisz: keytool -genkey -alias kocur -keyalg RSA Powyższe polecenie zadał mi kilka prostych pytań potrzebnych do certyfikat. Użyłem hasła "changeit", gdziekolwiek się o to pytam (ponieważ jest to domyślne hasło).

Na kończąc powyższego polecenia, to wygenerowany plik kluczy w katalogu C: /. Documents and Settings // kluczy skopiowałem ten plik do .keystore tomcat/conf/myKeyStore.jks

Potem dodałem po conf/serwerze.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" /> 

I to wszystko !! Następnym razem uruchomiłem tomcat, mój stary link http nie działa. Potem próbowałem dodać sweet 's' do http z numerem portu 8443 i lo! wszystko znowu działało.

Dziękuję za wspaniały link !!

+1

Jeszcze jedna sprawa, po włączeniu SSL dla mój serwer internetowy, czy mogę mieć pewność, że zabezpieczenia mojej witryny są kompletne? Czy muszę też zrobić coś innego? Na przykład wykonuję wiele wywołań AJAX, aby uzyskać dane dla wszystkich moich stron. I serwer zwraca odpowiedzi JSON do każdego wywołania ajax. Czy to w porządku? Podobnie podczas logowania również wysyłane jest żądanie postu AJAX o nazwie użytkownika i haśle w formacie JSON. Czy to jest bezpieczne? –

+1

Cokolwiek przechodzącego przez włączony tomcat z włączonym ssl zostanie zaszyfrowane, jeśli adres URL zaczyna się od "https". nie ma znaczenia, czy jego ajax, czy nie. brzmi to tak, jakbyś wygenerował swój własny certyfikat? jeśli tak, możesz chcieć kupić "prawdziwy" certyfikat, kiedy idziesz do produkcji. nie będzie to bezpieczniejsze, tylko dlatego, że przeglądarki użytkowników będą ostrzegać je przed witrynami używającymi certyfikatów samopodpisanych. – nont

Powiązane problemy