如何优化Tomcat服务器中对Https请求访问方式相关的系统配置
- 格式:pdf
- 大小:1011.59 KB
- 文档页数:20
Tomat8配置HTTPS 一.环境:Jdk1.8Tomcat8.0.22二.步骤:1,创建证书:首先建立目录,例如:d:/keys然后利用jdk的keytool工具生成证书d:\keys>keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey.keystore具体的输入项图片中都有说明,有一点我要解释一下;在输入完密码后提示输入域名是我输入的是,其实这个域名是不存在的,但是我为了演示所以虚拟了这个域名,技巧在于修改C:\Windows\System32\drivers\etc\hosts添加内容如下:127.0.0.1 这样在访问的时候其实是访问的127.0.0.1也就是本机严重提醒:提示输入域名的时候不能输入IP地址2,导出证书:d:\keys>keytool -export -file d:/keys/wsria.crt -alias wsria -keystored:/keys/wsriakey.keystore3,为客户端的JVM导入证书(目前没觉得这步有什么用)d:\keys>keytool -import -alias kk -keystore "D:\ProgramFiles\Java\jdk1.8.0_45\jre\lib\security\cacerts" -file D:/keys/wsria.crt此处输入的口令是:changeit4、应用证书到Web服务器-Tomcat打开tomcat目录的conf/server.xml文件,开启83和87行的注释代码,并设置keystoreFile、keystorePass修改结果如下:注意大小写<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="D:/keys/wsriakey.keystore"keystorePass="123456"/>到此Tomcat的SSL启用完成,现在你可以启动tomcat试一下了http://192.168.5.16:8443/---------------------------------------------------------------------------------------------------------------------- 以下是另一个方法,由于配置过程中出错,没有详细研究,不过觉得这个方法讲的比较详细,暂且在这里列出来,留作以后研究(webservice部分还是挺有用的)环境Jdk1.6 Tomcat6 jax-ws webservice1生成证书这里用到的文件,我们存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。
Tomcat 7.0 SSL配置(https)
1.Java key tool 方式配置
1)确保系统环境变量中的path变量已经添加java目录里的bin目录
2)打CMD命令行窗口,输入以下命令:keytool -v -genkey -alias tomcat -keyalg RSA
-keystore d:/tomcat.keystore -validity 36500
注:这里的tomcat、tomcat.keystore名字可以自定义,d:/tomcat.keystore
是文件保存位置,36500表示证书的有效期是36500天大概100年。
3)将会提示输入两次密码(这里我输入的是tomcat)
4)然后要一个个提示输入信息,任意输入即可
5)输入完后进行确认:输入y即可
6)然后会提示输入这个证书的密码和keystore的密码相同,按回车就行了,
这里直接回车就行了。
7)完成后到文件保存位置复制文件放tomcat主目录里的bin目录下
8)返回到tomcat主目录,进入conf目录,编辑service.xml文件
9)找到下图位置,把原本注释着的<Connector……的注释解开或复制一份
放在下面,并添加keystoreFile(证书文件位置),keystorePass(证书密码)
10)配置完成,启动服务器测试,到bin目录打开tomcat7.exe
11)打开浏览器访问https://localhost:8443,能够进入tomcat的首页就是成功
了。
12)。
Tomcat性能优化技巧与实践Tomcat作为一款免费的Web应用服务器,被广泛应用于Java Web应用的开发和生产环境中。
但是,随着应用规模的不断扩大,Tomcat的性能问题也日益凸显。
在这样的背景下,Tomcat的性能优化技巧和实践就显得尤为重要了。
本文将就此展开探讨,希望能对广大的开发者和运维人员有所启发和帮助。
一、Tomcat性能问题的来源在开始讨论Tomcat的性能问题和优化技巧之前,我们需要先理解Tomcat性能问题的来源。
简单地说,Tomcat性能问题主要来自于以下两个方面:1.硬件资源不足:当Tomcat运行的服务器或虚拟机内存、CPU等硬件资源不足时,会导致应用的运行缓慢甚至崩溃。
这时,我们需要考虑升级硬件或增加服务器数量等措施来解决性能问题。
2.应用本身的问题:当应用本身的代码、配置或环境存在问题时,也会导致Tomcat性能下降。
这时,我们需要使用一些技巧和工具来检查和优化应用本身。
接下来,我们将主要集中讨论针对应用本身的Tomcat性能优化技巧和实践。
二、Tomcat性能优化的常用技巧1.设置JVM参数Tomcat依赖于Java虚拟机(JVM)来运行Web应用。
因此,正确配置JVM参数可以显著提高Tomcat的性能。
以下是一些常用的JVM参数配置示例:-XX:MaxPermSize=512m //设置JVM最大方法区大小为512m -Xms2g //设置JVM初始化堆内存大小为2g-Xmx4g //设置JVM最大堆内存为4g-XX:+UseConcMarkSweepGC //使用CMS垃圾回收器注意,不同的应用和硬件环境可能需要不同的JVM参数配置。
需要根据具体情况进行调整。
2.启用压缩Tomcat支持HTTP请求和响应内容的压缩,可以显著减少网络传输的数据量和时间。
启用压缩的方式是在Tomcat的配置文件中添加以下行:<Connector port="8080" protocol="HTTP/1.1"compression="on"compressionMinSize="2048"noCompressionUserAgents="gozilla, traviata"compressableMimeType="text/html,text/xml,text/plain,application/j son,application/xml,application/javascript,application/x-javascript,text/css"/>其中,compression="on"表示启用压缩;compressionMinSize="2048"表示只对超过2KB的内容进行压缩;noCompressionUserAgents="gozilla, traviata"表示不对指定的用户代理进行压缩;compressableMimeType="..."表示压缩可压缩类型的内容。
Tomcat配置http请求自动转为https请求并解决80端口占用问题第一步.配置T omcat的https请求,我的这篇博客记录了一下相关操作:https:///LJX_ahut/article/details/82153895第二步修改默认端口由于http协议的默认端口是80(Tomcat默认配置是8080),https 协议的默认端口是443(Tomcat默认配置是8443),所以为了方便使用,修改端口号之后在访问是就不需要再输入端口号了1.<!--将默认的redirectPort = "8443" 改为443,port改为80 ,使用http访问时,将会重定向至443端口-->2.<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>3.4.<!--将默认端口port配置改为 443->5.<Connector SSLEnabled="true" clientAuth="false" connectionTimeout="20000" keystoreFile="E:/lujx/Refs/apache-tomcat-8.0.53/ssl/tomcat.keystore" keystorePass="123456" maxThreads="150" port="443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS"/>6.7.一键复制第三步·修改web.xml文件配置修改与server.xml的同级文件web.xml,在<web-app>标签下添加字标签(即与<welcome-file-list>同一级子标签),具体内如如下1.<security-constraint>2.<web-resource-collection>3.<web-resource-name>SSL</web-resource-name>4.<url-pattern>/*</url-pattern>5.</web-resource-collection>6.<user-data-constraint>7.<transport-guarantee>CONFIDENTIAL</transport-guarantee>8.</user-data-constraint>9.</security-constraint>一键复制可能遇到的问题:1.Tomcat 启动失败,错误信息是80端口被占用解决方法:a.首先排除多个tomcat容器使用同一个端口的错误,若是需要同时使用多个tomcat,则将每个tomcat配置不同的端口号b.其他非系统进程的端口占用,win+r组合键,键入cmd进入dos界面,输入命令 netstat -ano 查看系统进程信息,找到占用该端口的进程的pid,使用命令taskkill -f -pid 进程PID 杀掉进程后重启tomcat即可c.系统进程占用端口同样的dos命令,找到一个占用80端口的系统进程,但是在dos 界面中没有权限关闭该进程,如下图所示经过一番查询,得知,该进程服务名为World Wild Web Publishing Service ,出于谨慎的态度多方查阅资料,该进程除非电脑要作为一个站点的发布,否则可以关闭,并且设置属性为禁用,如图所示。
tomcat同时使⽤http和https访问的配置⽅法针对⼀个tomcat中有的项⽬需要使⽤ssl加密有些可以直接访问的情况,可通过修改tomcat/conf下的server.xml来实现。
具体配置可参考下⾯这段代码,注意<Service name=”Catalina1″>这个标签中的配置。
<?xml version='1.0' encoding='utf-8'?><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><Listener className="org.apache.catalina.core.JasperListener" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /><Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /><Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /><GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><!-- 此处使⽤了ssl配置,需⽤https才可访问 --><Connector port="8284" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"clientAuth="false" sslProtocol="TLS"SSLEnabled="true" scheme="https" secure="true"keystoreFile="conf/tomcat.jks" keystorePass="pico2012server"truststoreFile="conf/tomcat.jks" truststorePass="pico2012server"/><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="erDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service><!-- 加⼊⼀个新的⽹站服务配置,每个service都可以单独配置⼯程加载⽬录、端⼝等 --><Service name="Catalina1"><!-- 此处表⽰加载的⼯程仍使⽤原始的http⽅式访问 --><Connector port="8484" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/><Connector port="18009" protocol="AJP/1.3" redirectPort="18443" /><Engine name="Catalina1" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="erDatabaseRealm"resourceName="UserDatabase"/></Realm><!-- 该service加载的⼯程放置⽬录,与webapps同⽬录的webapps1 --><Host name="localhost" appBase="webapps1"unpackWARs="true" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /><!-- 此处要显⽰的指定加载webapps1下的GS-Web⼯程 --><Context path="" docBase="GS-Web" debug="0" reloadable="true"/></Host></Engine></Service></Server>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
Tomcat的SSL配置前提是:保证JDK的环境变量配置正确,能够在任何文件夹下使用java命令1.生成server key以命令行方式切换到目录tomcat所在的根目录下,在command命令行输入如下命令(jdk1.4以上带的工具):keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit-keystore server.keystore -validity 3600keytool –genkey”将自动使用默认的算法生成公钥和私钥-alias [名称]给证书取个别名-keyalg 指定密钥的算法,如果需要指定密钥的长度,可以再加上keysize参数。
密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍-keystore 参数可以指定密钥库的名称。
密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。
-validity 证书的有效日期,默认是90天-keypass changeit不添加证书密码-storepass changeit e 不添加存储证书问价的密码(证书要加密的话去掉后面的两项)输入相关信息后最后确认便会在tomcat根目录下生成server.keystore 文件。
2. 将证书导入的JDK的证书信任库中:导入过程分2步,第一步是导出证书,第二步是导入到证书信任库,命令如下:keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit-file server.cer 证书文件所在的地址-keystore 证书存储器所在的地址-storepass keystore的密码keytool -import -trustcacerts -alias tomcat -file server.cer -keystore cacerts -storepass changeit如果有提示,输入Y就可以了。
TOMCAT服务器中的性能优化Tomcat是一款开源的Java Servlet容器,广泛应用于企业级Web应用程序的开发和运行。
由于其使用方便、可灵活配置的优点,被越来越多的开发者所喜爱,并成为了Java Web开发的重要组成部分。
然而,Tomcat服务器在高并发的情况下可能会出现性能问题,影响Web应用程序的正常运行。
因此,本文将介绍Tomcat服务器中的性能优化方法,帮助开发者更好地优化自己的Web应用程序。
一、Tomcat的架构在进行Tomcat服务器的性能优化前,我们需要了解其架构。
Tomcat服务器的架构主要包括以下几个组件:1. Servlet容器:负责处理HTTP请求和响应,并将它们转发给相应的Servlet。
2. 连接器:负责与客户端建立TCP连接、处理协议和编解码等任务。
3. Engine:Tomcat服务器的核心组件,负责管理虚拟主机、容器和线程池等资源。
4. Host:虚拟主机,负责处理来自特定主机的请求,并将请求转发给相应的Context。
5. Context:Web应用程序的执行环境,包括Servlet、JSP和静态文件等资源。
6. Valve:过滤器,可以拦截请求和响应,并在它们到达目的地之前对它们进行处理。
了解Tomcat服务器的架构有助于我们更好地理解性能优化的方法和原理。
二、基础优化在进行高级优化前,我们需要进行一些基础优化,以确保Tomcat服务器的最大性能。
1. 使用最新版本的Java和Tomcat:Java的性能和稳定性在不断提高,因此使用最新版本的Java和Tomcat可以提高服务器的性能和稳定性。
2. 调整Tomcat配置参数:Tomcat服务器的性能受到其配置参数的影响,因此调整Tomcat的配置参数可以提高服务器的性能。
可以通过更改server.xml文件来修改Tomcat参数。
调整参数时需要注意保持平衡,避免调整一个参数而使其他参数受到负面影响。
HTTP与HTTPS介绍一、什么是HTTPS在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
为了保证这些隐私数据能加密传输,于是网景公司设计了 SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。
SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定义在RFC 6101中,之后IETF对SSL 3.0进行了升级,于是出现了TLS(Transport Layer Security) 1.0,定义在RFC 2246。
实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。
目前 TLS的版本是1.2,定义在RFC 5246中,暂时还没有被广泛的使用。
二、 Https的工作原理HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。
TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。
握手过程的简单描述如下:1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。
证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.获得网站证书之后浏览器要做以下工作:a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
tomcat9以上最新版配置https⽅法,并⽤lr压测⼀、⽣成证书Tomcat⽀持JKS格式证书,从Tomcat7开始也⽀持PFX格式证书,两种证书格式任选其⼀。
⽂件说明:证书⽂件xxxx.pem,包含两段内容,请不要删除任何⼀段内容。
如果是证书系统创建的CSR,还包含:证书私钥⽂件xxxx.key、PFX格式证书⽂件xxxx.pfx、PFX格式证书密码⽂件pfx-password.txt。
我这⾥⽤jdk⽣成⾃签证书,格式是keystorekeytool -genkey -v -alias testKey -keyalg RSA -validity 3650 -keystore test.keystore⼆、配置tomcat https/conf/server.xmljdk⾃签<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="/usr/local/apache-tomcat-9.0.14/conf/test.keystore"type="RSA" certificateKeystorePassword="Redcore@123"/></SSLHostConfig></Connector>其他格式<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.15/cert/xxx.pfx"certificateKeystoreType="PKCS12" certificateKeystorePassword="xxx"/></SSLHostConfig></Connector>三、⾃签证书不信任处理查看证书,复制到⽂件。
Tomca7t服务器配置HTTP和HTTPS同时访问(首先你要有 ssl 证书 ,我是阿里的 )查看申请ssl证书一.下载 tomcat证书(两个文件)(1.)pfx-password.txt 存放 [密码](2.)xxxx.pfx 存放证书二.在 tomcat安装目录下创建 cret 目录,将下载的证书放在 cret 目录下三.在 tomcat安装下的 conf/server.xml 配置(3.1) 配置 https(详情,可能需要先登录)<Connector port="443"protocol="org.apache.coyote.http11.Http11Protocol"SSLEnabled="true"scheme="https"secure="true"keystoreFile="G:/xxxxx/apache-tomcat-7.0.75/cret/xxxxx.pfx"keystoreType="PKCS12"keystorePass="CH7T55MI"clientAuth="false"SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH _AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_A ES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>参数信息:port::端口号protocol:协议规则>详情SSLEnabled:开启tomcat对https支持(true/false)scheme:协议名称secure:是否开启安全访问(true/false)keystoreFile:秘钥文件路径(即xxxx.pfx 的绝对路径)keystoreType:秘钥库类型(jks/pkcs12)keystorePass:创建秘钥文件时输入的密码(即fx-password.txt的内容)clientAuth:身份验证(true/false)SSLProtoco:ssl的协议ciphers:密码(3.2) 配置http<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URLEncoding="UTF-8"/>参数信息:port: 端口号connectionTimeout: 设置连接超时,单位毫秒(connectionTimeout = 2000;代表超过2秒,就是超时)protocol:协议规则>详情redirectPort:使用http请求某个资源,而该资源本身又被设置了必须要https方式访问,此时Tomcat会自动重定向到这个redirectPort设置的https端口>详情URLEncoding:编码格式((URL编码),也称作百分号编码)四.配置所有访问强制转换为 https(选配)在 tomcat 安装目录 conf/web.xml 的</welcome-file-list> 之后<login-config><!-- Authorization setting for SSL --><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name> </login-config><security-constraint><!-- Authorization setting for SSL --><web-resource-collection ><web-resource-name >SSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>五.重新启t动tomcat 即可。
1.1如何优化Tomcat服务器中对Https请求访问方式相关的系统配置1.1.1优化Tomcat中的Https的配置1、将所创建出的数字证书库文件放入WebApp项目内的目录(1)将本示例(参考“跟我学Java安全技术及应用——如何创建数字证书文件”一文中的相关内容)创建的数字证书库文件server.keystore放入WebApp项目内的目录(2)修改Https相关的<Connector>标签将其中的keystoreFile的属性修改为keystoreFile="\webapps\ROOT\server.keystore",其中的“\”代表Tomcat的根目录(本示例为F:\apache-tomcat-7.0.39)<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"maxThreads="150" scheme="https" secure="true" sslProtocol="TLS"clientAuth="false" keystoreFile="\webapps\ROOT\server.keystore" keystorePass="123456" />(3)再启动Tomcat服务器并观察Https是否正常(4)再以Https的方式浏览相关的页面以测试是否正常2、在Web应用中正确地应用Https协议(1)实现网页的自动跳转在页面中加入如下的自动跳转代码:< meta http-equiv="Refresh" content="秒数; url=跳转的文件或地址">。
将其中的“url”属性设置为Https形式的URL地址字符串。
(2)页面中的所有资源都必须要应用Https方式进行访问如果一个页面需要通过HTTPS访问被访问,则该页面其中所有的组成元素都必须是HTTPS方式的访问形式——也就是如果页面中包含有图片、JS脚本、FLASH插件等资源,但如果这些资源文件仍然是通过普通的HTTP方式去请求调用的,则会出现资源文件找不到的提示错误。
因此,需要将调用flash的播放插件的标签内的codebase属性中的http改成HTTPS:codebase='/pub/shockwave/cabs/flash/swflash.cab'。
3、屏蔽Web应用的Http访问方式(1)采用Http的方式仍然可以访问Web应用系统尽管已经对Tomcat服务器进行了Https的连接配置定义,但可以采用Https的方式访问部署在Tomcat服务器中的各个Web应用,如下示图所示为访问某个论坛系统的测试页面的局部截图。
但如果在浏览器中继续输入http://127.0.0.1:8080/index.jsp后并以Http的请求方式访问同一个页面,Web应用程序仍然可以HTTP方式访问。
如下示图所示为采用HTTP方式访问某个论坛系统的测试页面的局部截图。
(2)屏蔽Web应用的Http访问方式如果配置了Https的访问方式而不再希望用户继续能够以Http的访问方式访问部署在Tomcat服务器中的各个Web应用,则可以在Web应用本身的web.xml部署定义的配置文件中添加如下的配置定义,将自动实现将Http的请求访问方式跳转到Https的请求访问方式,从而达到屏蔽以Http的访问方式访问部署在Tomcat服务器中的各个Web应用的目的。
<security-constraint><web-resource-collection > <!-- 此元素确定应该保护的资源集--><web-resource-name >SSL</web-resource-name><!-- url-pattern适用于直接访问这些资源,但不适用于转发的访问方式--><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><!-- 访问相关资源时使用任何传输层保护--><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>其中的<security-constraint>标签元素的用途是用来指示服务器使用何种验证方法,而<web-resource-collection >标签元素的用途是确定应该保护的资源,在<security-constraint>标签元素内包含至少一个<web-resource-collection >标签元素。
其中的<url-pattern>仅适用于直接访问这些资源的请求方式,它不适合于通过MVC体系结构利用RequestDispatcher请求转发访问的目标JSP页面,也不适合于利用类似<jsp:forward>的动作标签访问的JSP页面。
<user-data-constraint>标签元素指出在访问相关资源时是否使用传输层的保护。
它必须包含一个<transport-guarantee>子标签元素(该标签的合法值为NONE、INTEGRAL或CONFIDENTIAL)。
如果将<transport-guarantee>标签的值设置为NONE值,将对所用的通讯协议不加限制;设置为INTEGRAL值和CONFIDENTIAL值都表示要求应用SSL (Secure Sockets Layer 安全套接层)——当然,如果希望关闭SSL ,只需要将CONFIDENTIAL 值改为NONE值即可。
(3)在IE浏览器中测试本配置定义的效果在浏览器中继续输入http://127.0.0.1:8080/webbbs/index.jsp后,将出现下面的安全提示信息页面,因为IE浏览器要切换到Https的访问状态——之所以仍然出现这样的安全提示信息页面,主要是本示例的数字证书没有进行CA认证。
点击页面中的“继续浏览此网站(不推荐)。
”的超链接后,IE浏览器将自动地切换到https://127.0.0.1:8443/webbbs/index.jsp的URL地址的访问方式。
如下为切换后的结果页面的局部截图:继续以Http的方式访问Web应用中的其它页面,比如用户登录页面,在浏览器地址栏中输入如下的URL地址字符串:http://127.0.0.1:8080/webbbs/user/login.jsp,同样也将出现下面的安全提示信息页面:点击页面中的“继续浏览此网站(不推荐)。
”的超链接后,IE浏览器将自动地切换到https://127.0.0.1:8443/webbbs/user/login.jsp的URL地址的访问方式。
因此,浏览器将会自动地将原来以Http请求方式访问转换为Https请求访问方式。
(4)在FireFox浏览器中测试本配置定义的效果在FireFox浏览器中也能够将Http的访问方式自动地切换为Https的访问状态,如下示图所示。
4、设置Web应用的某个URL采用Https方式访问——局部采用Https方式访问(1)本示例是将整个Web应用都要求采用Https方式访问因为在本示例的<url-pattern>/*</url-pattern>的设置定义中将URL映射方式设为“/*”,它表示整个Web应用都要求采用Https方式访问。
但在实际应用中,可能只需要将Web应用中涉及“敏感信息”的功能模块的请求访问采用Https方式,而Web应用中的普通数据的传输和访问仍然采用Http方式,以提高Web应用的整体访问性能。
(2)修改<url-pattern>的配置定义修改为只提交用户登录的请求URL为Https方式:<url-pattern>/loginServlet.action</url-pattern>,而其它的请求URL仍然采用Http方式。
因此,只有当用户访问“loginServlet.action”所对应的JSP页面时,才需要采用Https方式。
(3)测试本示例的效果以http://127.0.0.1:8080/webbbs/index.jsp的方式显示出Http的正常页面,输入http://127.0.0.1:8080/webbbs/user/login.jsp也仍然以正常的Http方式显示登录页面。
在登录页面中输入账号和密码后,然后再点击表单中的“提交”按钮后,将自动切换为Https的方式请求后台的Servlet程序——http://127.0.0.1:8080/webbbs/loginServlet.action。
点击页面中的“继续浏览此网站(不推荐)。
”的超链接后,IE浏览器将自动地切换到https://127.0.0.1:8443/webbbs/loginServlet.action,如下示图所示。
5、<url-pattern>的3种配置定义方式(1)完全匹配<url-pattern>/loginServlet.action</url-pattern>(2)路径匹配——如下示例匹配根路径下的全部请求<url-pattern>/*</url-pattern>或者<url-pattern>/xxx/*</url-pattern>(3)扩展名匹配<url-pattern>*.do</url-pattern><url-pattern>*.html</url-pattern>上面的示例匹配全部do结尾和html结尾的请求,但不能用*,否则报错——如下示例是错误的:<url-pattern>*</url-pattern>。