春运抢票闹的心慌慌,还好客户体谅,没多大任务,就是实现一个ssl。功能实现,趁下班还有一个小时之际,边打酱油,边呕心沥血完成此篇。欢迎灌水,给意见。
背景:项目发布环境是jboss服务,开发环境是jetty服务。因此小结一下jboss 和jetty如何配置成ssl,以及如何通过spring security来控制http/https的切换。本篇不针对所涉及的知识做介绍,
只跟大家分享一下如何使用。
一、准备好keystore
对keystore不了解的同学可以参考一下《Java_keytool_安全证书学习笔记》。
以下是我在cmd中的操作:
第一步:为服务器生成证书
keytool -genkey -alias jboss -keyalg RSA -keystore D:\jboss.keystore -dname "CN=10.108.110.88, OU=cn, O=cn, L=cn, ST=cn, C=cn" -keypass 888888 -storepass 888888
第二步:为客户端生成证书
keytool -genkey -v -alias myKey -keyalg RSA -storetype PKCS12 -keystore D:\my.p12 -dname "CN=MyKey, OU=cn, O=cn, L=cn, ST=cn, C=cn" -keypass 888888 -storepass 888888
第三步:让服务器信任客户端证书
keytool -export -alias myKey -keystore D:\my.p12 -storetype PKCS12 -storepass 888888 -rfc -file D:\my.cer
keytool -import -v -file F:\my.cer -keystore D:\jboss.keystore -storepass 888888
以上操作是为了双向认证时准备了两个证书,但是项目只用了单向认证。
二、将服务配成ssl
2.1 将jboss服务配置成ssl
2.1.1、打开%JbossHOME%\server\default\deploy\jboss-web.deployer\server.xml。找到
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
去掉注释,修改为
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="F:/jboss.keystore" keystorePass="999999"
truststoreFile="F:/jboss.keystore" truststorePass="999999"
/>
2.1.2、测试jboss配置ssl是否成功
重启jboss服务,使用"http://localhost:8080"能访问jboos首页;
使用"https://localhost:8443"访问时,浏览器会出现下图提示:
由于是首次访问,只需要点击“继续调用次网站”即可,则会跳转至下图<!--[endif]-->
点击证书错误
查看证书
安装证书
将证书安装到“受信任的证书颁发机构”
重启浏览器,再次访问“https://localhost:8443”能直接进入jboss首页,则说明jboss已经成功配置成ssl。
2.2 将jetty配置成ssl
如果你的开发环境是使用jetty为服务,则需要将jetty配置成ssl。项目中使用的是maven jetty plugin,因此本篇只介绍如何将maven jetty 配置成ssl。
2.2.1 准备好keystore,操作参考前面。
2.2.2 在pom文件里面配置maven jetty plugin,并开通ssl功能。
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>7.0.1.v20091125</version>
<configuration>
<webAppConfig>
<defaultsDescriptor>src/test/resources/webdefault.xml</defaultsDescriptor>
<contextPath>/</contextPath>
</webAppConfig>
<!-- add by alvin 2013-1-21-->
<connectors>
<!--在maven库里../org/eclipse/jetty/server路径下找到SelectChannelConnector-->
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
</connector>
<!--在maven库里../org/eclipse/jetty/server路径下找到 SslSocketConnector -->
<connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
<port>8443</port>
<maxIdleTime>60000</maxIdleTime>
<Acceptors>2</Acceptors>
<AcceptQueueSize>100</AcceptQueueSize>
<!--keystore的路径和密码-->
<keystore>${ keystore .path}/jboss.keystore</keystore>
<password>999999</password>
<keyPassword>999999</keyPassword>
<!-- truststore 的路径和密码-->
<truststore> ${ keystore .path} /jboss.keystore</truststore>
<trustPassword>999999</trustPassword>
<!--是否双向验证-->
<wantClientAuth>false</wantClientAuth>
<needClientAuth>false</needClientAuth>
</connector>
</connectors>
<!-- end-->
</configuration>
</plugin>
</plugins>
2.2.3 验证jetty是否配置成功,步骤和验证jboss一样。
三、spring security 控制http/https切换
3.1 在../webapp/WEB-INF/web.xml 中,增加springSecurity的过滤器
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.2 配置springsecurity.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd
">
<security:http auto-config="true" >
<!-- 未指定的url一致用http通道 -->
<security:intercept-url pattern="/*"
requires-channel="http"/>
<security:intercept-url pattern="/main.action"
requires-channel="http"/>
<!-- 指定url使用https通道 -->
<security:intercept-url pattern="/main/UserManager-login.action"
requires-channel="https"/>
<security:intercept-url pattern="/main/UserManager-innerlogin.action"
requires-channel="https"/>
<security:intercept-url pattern="/infoRepIndex.action"
requires-channel="https"/>
</security:http>
<security:authentication-manager></security:authentication-manager>
</beans>
3.3 在web.xml中加载springsecurity.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>../springsecurity.xml</param-value><!--此处为springsecurity.xml在项目中的路径-->
</context-param>
至此,简单的spring security应用配置结束。以上配置仅供参考。完成以上配置,就可以实现ssl安全访问web,并能配置哪些应用需要https访问,其余的用http访问。
相关推荐
jboss配置入门 jboss系统是一种基于Java的应用服务器,具有高性能、可扩展、安全性强等特点。在本文中,我们将对jboss的基本配置进行介绍,包括其文件夹结构、配置文件、负载均衡配置等。 jboss文件夹结构 jboss的...
在`{JBOSS_HOME}\server\default\deploy\jbossweb-tomcat50.sar`目录下的`server.xml`文件中,找到或添加一个用于HTTPS连接的Connector配置。例如: ```xml ${jboss.bind.address}" maxThreads="100" ...
- 对于Jboss,配置通常在`standalone.xml`或`domain.xml`中进行,通过`<socket-binding-group>`和`<server-socket>`元素设定。 3. **申请签发证书**: - 对于生产环境,建议从公认的CA购买证书。首先,使用`...
Jetty的虚拟目录配置通常在`etc/jetty.xml`或`etc/jetty-webapps.xml`中进行。添加`<WebAppContext>`元素,如下: ```xml <Configure class="org.eclipse.jetty.server.Server"> <New class="org.eclipse....
JBOSS 7 基于 HTTPS 双向 SSL 认证 JBOSS 7 基于 HTTPS 双向 SSL 认证是一种高级别的安全认证...通过生成服务器证书、客户端证书、配置 JBOSS 服务器和导入客户端证书到浏览器,我们可以实现 HTTPS 双向 SSL 认证。
Windows 环境下 JBoss AS 7 配置 HTTPS 在 Windows 环境下,配置 JBoss AS 7 的 HTTPS 需要按照特定的步骤进行。下面将详细介绍配置 HTTPS 的过程。 生成服务器端证书文件 首先,需要使用 JDK 自带的工具制作 ...
在集成场景中,JBoss作为后端应用服务器,Tomcat或Jetty则作为前端Servlet容器,负责接收HTTP请求并通过AJP将请求转发给JBoss,由JBoss处理后再通过AJP返回响应至前端容器,最终由前端容器完成HTTP响应。 **四、...
通过配置安全约束,可以保护 Web 应用的安全性。 Jboss 配置 HTTPS 协议可以保护 Web 应用的安全性,防止数据在传输过程中的泄露。配置 HTTPS 协议需要生成密钥文件,修改 server.xml 配置文件,添加 server....
【JBOSS4.2基本配置详解】 JBOSS4.2是一款开源的企业级Java应用服务器,它基于Java EE规范,提供了对Web服务、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等众多服务的支持。在进行JBOSS4.2的基本...
- 集群配置:通过配置多个JBoss实例并共享同一持久化存储,实现高可用性和故障转移。 - 负载均衡:结合Apache HTTPD或Nginx反向代理,根据负载策略将请求分发到各个服务器节点。 6. **日志管理** - 日志配置:...
通过本文的学习,我们不仅了解了如何为jBoss应用服务器配置SSL证书,还深入探讨了密钥库文件的创建过程及SSL监听端口的具体配置方法。这些知识对于保障网络安全具有重要意义,希望对大家有所帮助。 总之,在配置...
Apache全球应用最广泛的http服务器,免费,出自apache基金组织 Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) ...
### Spring Security核心知识点详解 #### 一、Spring Security概述与整体架构 ##### 1.1 什么是Acegi Security? Acegi Security(后更名为Spring Security)是Spring框架中的一个子项目,专注于提供强大的安全性...
如何开启或禁止Jetty中的SSL功能 如何在Jetty中安全存储密码 如何安全终止Jetty 如何配置Spnego Application Server Integrations(集成) Apache Geronimo JEE 配置Apache httpd和Jetty教程 配置Apache mod_proxy和...
3. **更新JBoss配置**:在JBoss的配置文件中,你需要指定使用JBoss Native的NIO或APR connector,并配置相应的SSL参数。 4. **测试和调试**:启动JBoss服务器并尝试通过HTTPS连接来验证配置是否成功。可能需要处理...
`jboss-ejb3.xml`是JBoss AS 7特有的配置文件,用于扩展或覆盖`ejb-jar.xml`中的配置。这个文件允许开发者针对特定的JBoss实现进行更细致的定制,比如JNDI绑定、资源引用、缓存策略、线程池配置等。例如,如果你想...
在IT行业中,开发环境的配置是开发者日常工作中不可或缺的一部分。本教程主要关注的是如何使用Eclipse集成开发环境(IDE)配合JBossIDE插件以及JBoss应用服务器来搭建一个高效、稳定的Java EE开发环境。接下来,我们...
- **实现原理**:通过配置JBOSS的代理机制,使得Spring AOP可以在类加载时自动为指定的方法添加横切关注点。 - **应用场景**: - 监控方法调用的时间和参数。 - 实现事务管理。 - 日志记录。 ##### 2.4 Spring...
### jboss-as-web-7.0.1.Final配置SSL详解 #### 一、引言 随着互联网技术的发展,安全成为越来越重要的议题。对于企业级应用服务器而言,配置SSL(Secure Sockets Layer,安全套接层)是非常必要的,它能够为用户...