Tomcat 安全
配置安全
- 删除webapps目录下的所有文件,禁用tomcat管理界面;
- 注释或删除tomcat-users.xml文件内的所有用户权限;
- 更改关闭tomcat指令或禁用
- tomcat的server.xml中定义了可以直接关闭 Tomcat 实例的管理端口(默认8005)。可以通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。
- 由于默认关闭Tomcat 的端口和指令都很简单。默认端口为8005,指令为SHUTDOWN 。
方案一:更改端口号和指令: <Server port="8456" shutdown="itcast_shut">
方案二: 禁用8005端口: <Server port="‐1" shutdown="SHUTDOWN">
- 定义错误页面
- 在webapps/ROOT目录下定义错误页面 404.html,500.html;
- 用户在访问资源时出现404,500这样的异常,就能看到我们自定义的错误页面,而不会看到异常的堆栈信息,提高了用户体验,也保障了服务的安全性。
- 然后在tomcat/conf/web.xml中进行配置 , 配置错误页面:
<error‐page> <error‐code>404</error‐code> <location>/404.html</location> </error‐page> <error‐page> <error‐code>500</error‐code> <location>/500.html</location> </error‐page>
应用安全
- 实现自己的安全管理模块(权限模块),用于控制应用系统的安全访问
- 包含两个部分:认证(登录/单点登录)和授权(功能权限、数据权限)两个部分
- 对于业务系统,做一套适用于自己业务系统的权限模块,也有很多的应用系统直接使用一些功能完善的安全框架,将其集成到web应用中,如:SpringSecurity、Apache Shiro等。
传输安全
Tomcat支持HTTPS
-
生成秘钥库文件。
keytool ‐genkey ‐alias tomcat ‐keyalg RSA ‐keystore tomcatkey.keystore
输入对应的密钥库密码, 秘钥密码等信息之后,会在当前文件夹中出现一个秘钥库文件:tomcatkey.keystore -
将秘钥库文件 tomcatkey.keystore 复制到tomcat/conf 目录下。
-
配置tomcat/conf/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" schema="https" secure="true" SSLEnabled="true"> <SSLHostConfig certificateVerification="false"> <Certificate certificateKeystoreFile="D:/DevelopProgramFile/apache‐tomcat‐8.5.42‐windows‐x64/apache‐tomcat‐8.5.42/conf/tomcatkey.keystore" certificateKeystorePassword="yzx" type="RSA" /> </SSLHostConfig> </Connector>
-
访问Tomcat ,使用https协议。
Tomcat性能调优
JVM参数调优
- Tomcat是一款Java应用,JVM的配置便与其运行性能密切相关,JVM优化的重点在内存分配和GC策略的调整上,因为内存会直接影响服务的运行效率和吞吐量,JVM垃圾回收机制则会不同程度地导致程序运行中断。
- 根据应用程序的特点,选择不同的垃圾回收策略,调整JVM垃圾回收策略,可以极大减少垃圾回收次数,提升垃圾回收效率,改善程序运行性能。
JVM内存参数
- -server
- 启动Server,以服务端模式运行
- 服务端模式建议开启
- -Xms
- 最小堆内存
- 建议与-Xmx设置相同
- -Xmx
- 最大堆内存
- 建议设置为可用内存的80%
- -XX:MetaspaceSize
- 元空间初始值
- -XX:MaxMetaspaceSize
- 元空间最大内存 默认无限
- -XX:MaxNewSize
- 新生代最大内存 默认16M
- -XX:NewRatio
- 年轻代和老年代大小比值,取值为整数,默认为2
- 不建议修改
- -XX:SurvivorRatio
- Eden区与Survivor区大小的比值,取值为整数,默认为8
- 不建议修改
Tomcat默认垃圾回收器
JVM调优
vi bin/catalina.sh
JAVA_OPTS="-server -Xms2g -Xmx2g -XX:MetaSpaceSize=256m -XX:MaxMetaSpaceSize=528m -XX:SurvivorRatio=8 -XX:USEConcMarkSweepGC -XX:+PrintGCDetails“
Tomcat配置调优
调整conf/server.xml中的连接器的配置maxThreads:池中最大线程数。
- maxConnections:最大连接数,CPU密集型建议不要过高,CPU运算不密集的建议建议2000左右
- acceptCount:最大等待数 多余的请求会放到等待队列(连接数=maxConnections+acceptCount,还多的会被拒绝)
- maxThreads:最大线程数,根据硬件决定
<Connector port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
connectionTimeout="20000"
URIEncoding="UTF‐8"
maxConnections="1000"
acceptCount="200"
maxThreads="500" />