我是基于Spring的Web开发的新手。
我们的网站是基于Spring的,目前基于http(非常不安全)。 由于该网站尚未生效,我们还通过正常的JSON请求向服务器发送登录/密码,主要关注JSP,UI设计,SQL查询等。
现在,我们希望转向专注于安全性,并转而采用https作为第一步。
我读过没有。网页和一些春季书籍似乎没有提供关于如何使用Spring提供https安全性的明确答案。 有人可以帮助我实现上述目标吗?
如果我的问题不明确,请告诉我。我会尽快添加更多细节。
我们的web.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>
现在只有一个控制器,spring-servlet.xml如下:
<?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>
提前多多感谢!
P.S。如果你可以在春天推荐我一个很好的基于网站/书籍的例子,我将不胜感激。我见过的大多数网站/书籍都非常重视理论,但很少有例子。这让我有点困惑。
答案 0 :(得分:12)
正如Dave所说,您需要配置容器以提供SSL,然后将spring应用程序部署到该容器中。了解有关配置Tomcat for SSL.
的信息或者,您可以更灵活地front your container using Apache和enable SSL there.
答案 1 :(得分:4)
Spring并非100%负责配置SSL。为此,您需要配置容器(jetty,tomcat等)来处理SSL。
答案 2 :(得分:3)
感谢所有帮助人员。 我将重新迭代我为了自己的记录而做的事情。
首先,关于'Tomcat for SSL'提供的链接非常有用。 我在那里阅读了所有关于SSL和Tomcat的内容,这就是我所做的:
在命令提示符下,输入: keytool -genkey -alias tomcat -keyalg RSA 上面的命令问了我一些证书所需的简单问题。我在任何地方都使用了密码'changeit'(因为这是默认密码)。
在完成上述命令后,它在C:/ Documents and Settings // .keystore中生成了一个密钥库文件 我将此.keystore文件复制到tomcat / conf / myKeyStore.jks
然后我将以下内容添加到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" />
就是这样! 下次,我运行tomcat我的旧http链接无法正常工作。 然后我尝试将甜蜜's'添加到http,端口号为8443并且lo!一切都恢复正常。
非常感谢您的精彩链接!
答案 3 :(得分:0)
配置两个不同的网站,一个用于http,一个用于https,一个用于http只能重定向到https网站。