# 利刃出鞘_Tomcat 核心原理解析(九)-- Tomcat 安全

利刃出鞘_Tomcat 核心原理解析(九)-- Tomcat 安全

一、Tomcat专题 - Tomcat安全 - 配置安全

1、 删除 tomcat 的 webapps 目录下的所有文件,禁用 tomcat 管理界面.

如下目录均可删除:

D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\webapps\docs
D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\webapps\examples
D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\webapps\host-manager
D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\webapps\manager
D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\webapps\ROOT\

2、 注释或删除 tomcat-users.xml 文件内的所有用户权限;

如:D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\tomcat-users.xml


<?xml version="1.0" encoding="UTF-8"?><tomcat-users xmlns="http://tomcat.apache.org/xml"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"version="1.0"><!-- Tomcat安全 - 配置安全:需删除以下 -->
<!-- 
<role rolename="admin-gui"/>
<role rolename="admin-script"/>   
-->
<!--  <user username="dzs168" password="dzs168" roles="admin-script,admin-gui"/>  --><!-- Tomcat安全 - 配置安全:需删除以下 -->
<!-- 
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="dzs168" password="dzs168" roles="admin-script,admin-gui,manager-gui,manager-script"/>--></tomcat-users>

3、更改关闭 tomcat 指令或禁用;

tomcat 的 server.xml 中定义了可以直接关闭 Tomcat 实例的管理端口(默认8005)。

可以通过 telnet 连接上该端口之后,输入 SHUTDOWN (此为默认关闭指令)即可关闭 Tomcat 实例(注意,此时虽然实例关闭了,但是进程还是存在的)。由于默认关闭 Tomcat 的端口和指令都很简单。默认端口为8005,指令为 SHUTDOWN 。

C:\Users\Administrator>  telnet 127.0.0.1 8005
shutdown 
C:\Users\Administrator>  

1)解决方案一:

修改 D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\server.xml 配置文件。

# 更改端口号和指令:
<Server port="1234" shutdown="dzs168">

2)解决方案二:

修改 D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\server.xml 配置文件。

# 禁用8005端口:
<Server port="‐1" shutdown="SHUTDOWN">

4、定义错误页面

在 webapps/ROOT 目录下定义错误页面 404.html,500.html,然后在 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>

这样配置之后,用户在访问资源时出现404,500这样的异常,就能看到我们自定义的错误页面,而不会看到异常的堆栈信息,提高了用户体验,也保障了服务的安全性。

二、 Tomcat专题 - Tomcat安全 - 传输安全

1、应用安全

  • 在大部分的 Web 应用中,特别是一些后台应用系统,都会实现自己的安全管理模块(权限模块),用于控制应用系统的安全访问,基本包含两个部分:
    认证(登录/单点登录)和授权(功能权限、数据权限)两个部分。

  • 对于当前的业务系统,可以自己做一套适用于自己业务系统的权限模块,也有很多的应用系统直接使用一些功能完善的安全框架,将其集成到我们的 web 应用中,如:SpringSecurity、Apache Shiro等。

2、传输安全–HTTPS 介绍

HTTPS:全称是超文本传输安全协议(Hypertext Transfer Protocol Secure),是一种网络安全传输协议。在 HTTP 的基础上加入 SSL/TLS 来进行数据加密,保护交换数据不被泄露、窃取。

3、SSL 和 TLS 是用于网络通信安全的加密协议,它允许客户端和服务器之间通过安全链接通信。

4、SSL 协议的3个特性:

1) 保密:通过SSL链接传输的数据时加密的。
2) 鉴别:通信双方的身份鉴别,通常是可选的,单至少有一方需要验证。
3) 完整性:传输数据的完整性检查。

5、从性能角度考虑,加解密是一项计算昂贵的处理,因为尽量不要将整个Web应用采用 SSL 链接, 实际部署过程中, 选择有必要进行安全加密的页面(存在敏感信息传输的页面)采用SSL通信。

6、HTTPS 和 HTTP 的区别主要为以下四点:

1) HTTPS 协议需要到证书颁发机构 CA 申请 SSL 证书, 然后与域名进行绑定,HTTP 不用申请证书。

2) HTTP 是超文本传输协议,属于应用层信息传输,HTTPS 则是具有SSL加密传安全性传输协议,对数据的传输进行加密,相当于 HTTP 的升级版。

3) HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是8080,后者是8443。

4) HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

7、HTTPS 协议优势:

1) 提高网站排名,有利于 SEO。

谷歌已经公开声明两个网站在搜索结果方面相同,如果一个网站启用了 SSL,它可能会获得略高于没有 SSL 网站的等级,而且百度也表明对安装了 SSL 的网站表示友好。因此,网站上的内容中启用 SSL 都有明显的 SEO 优势。

2) 隐私信息加密,防止流量劫持。

特别是涉及到隐私信息的网站,互联网大型的数据泄露的事件频发发生,网站进行信息加密势在必行。

3) 浏览器受信任。

自从各大主流浏览器大力支持HTTPS协议之后,访问HTTP的网站都会提示“不安全”的警告信息。

三、Tomcat专题 - Tomcat安全 - 传输安全Https协议配置

1、Tomcat 支持 HTTPS:生成秘钥库文件。

keytool 是 JDK 套件的一个命令。如:C:\Java\jdk1.8.0_131\bin\keytool.exe。
在 tomcat 安装目录下,打开 CMD 命令提示符窗口,
如:D:\java-test\apache-tomcat-8.5.42-windows-x64>


D:\java-test\apache-tomcat-8.5.42-windows-x64>keytool -genkey -alias tomcat -keyalg RSA -keystore tomcatkey.keystore
输入密钥库口令: dzs168再次输入新口令: dzs168您的名字与姓氏是什么?[Unknown]:  dzs168
您的组织单位名称是什么?[Unknown]:  dzs168
您的组织名称是什么?[Unknown]:  dzs168
您所在的城市或区域名称是什么?[Unknown]:  xian
您所在的省//自治区名称是什么?[Unknown]:  xian
该单位的双字母国家/地区代码是什么?[Unknown]:  cn
CN=dzs168, OU=dzs168, O=dzs168, L=xian, ST=xian, C=cn是否正确?[]:  y输入 <tomcat> 的密钥口令(如果和密钥库口令相同, 按回车): dzs168再次输入新口令: dzs168D:\java-test\apache-tomcat-8.5.42-windows-x64>

tomcat-47.png

2、输入对应的密钥库密码, 秘钥密码等信息之后,会在当前文件夹中出现一个秘钥库文件:tomcatkey.keystore

会生成密钥 D:\java-test\apache-tomcat-8.5.42-windows-x64\tomcatkey.keystore

3、将秘钥库文件 tomcatkey.keystore 复制到 tomcat/conf 目录下。

如:D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\tomcatkey.keystore

4、 在 tomcat/conf/server.xml 配置 密钥文件。


<!-- 在 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:/java-test/apache-tomcat-8.5.42-windows-x64/apache-tomcat-8.5.42/conf/tomcatkey.keystore" certificateKeystorePassword="dzs168" type="RSA" /></SSLHostConfig>
</Connector>

5、如:D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\server.xml


<?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /><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="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!-- 在 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:/java-test/apache-tomcat-8.5.42-windows-x64/apache-tomcat-8.5.42/conf/tomcatkey.keystore" certificateKeystorePassword="dzs168" type="RSA" /></SSLHostConfig></Connector>			   <!-- Define an AJP 1.3 Connector on port 8009 --><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><!--  默认引擎 标签的虚拟主机,配置为 www.tomcat.com  --><Engine name="Catalina" defaultHost="www.tomcat.com"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><!--1个虚拟主机 --><Host name="www.tomcat.com"  appBase="webapps" unpackWARs="false" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host><!--2个虚拟主机 --><Host name="oa.tomcat.com"  appBase="webapps2" unpackWARs="false" autoDeploy="true"><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>	  </Engine></Service>
</Server>
<!-- D:\java-test\apache-tomcat-8.5.42-windows-x64\apache-tomcat-8.5.42\conf\server.xml -->

6、访问 Tomcat ,使用 https 协议。

https://localhost:8443/

tomcat-48.png

上一节关联链接请点击
# 利刃出鞘_Tomcat 核心原理解析(八)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习入门-06

基于小土堆学习 如何把数据集和Transform结合袭来 https://pytorch.org/ 上述网址是pytorch的官网 这里会有详细的使用介绍 下述是对图像处理的专门文档 单击后可查看详细介绍 选择CIFAR10数据集 CIFAR10 数据集是一个广泛使用的计算机视觉数据集&#xff0c;包含了60000…

UV LED供电为什么要选择使用恒流驱动电源

LED为何一定要恒流供电? 在讨论此议题之前&#xff0c;什么是电源的恒流恒压&#xff1f; 什么是电源的恒流恒压   恒流&#xff0c;就是输出电流是恒定的&#xff0c;但电源电流却不是固定的&#xff0c;标称的电压只是安全上限&#xff1b;恒压&#xff0c;就是输出电压是…

力扣面试经典算法150题:跳跃游戏

跳跃游戏 今天的题目是力扣面试经典150题中的数组的中等难度题&#xff1a;跳跃游戏。 题目链接&#xff1a;https://leetcode.cn/problems/jump-game/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个非负整数数组 nums&#xff0c;你最初…

uniapp/uniapp x总结

uni-app组成和跨端原理 上图所诉 App的渲染引擎&#xff1a;同时提供了2套渲染引擎&#xff0c;.vue页面文件由webview渲染&#xff0c;原理与小程序相同&#xff1b;.nvue页面文件由原生渲染&#xff0c;原理与react native相同。开发者可以根据需要自主选择渲染引擎。 uniapp…

微信小程序uni :class不支持xxx语法

问题代码&#xff1a; <view class"cellTop"><view>{{list.payTime}}</view><view :class"payStatusClass${list.payStatus}">{{payStatusDe[list.payStatus]}}</view></view> .payStatusClass1{color: rgb(246, 122,…

鸿蒙HarmonyOS开发:创建新的Lite工程

当开始开发一个应用/服务时&#xff0c;首先需要根据工程创建向导&#xff0c;创建一个新的工程&#xff0c;工具会自动生成对应的代码和资源模板。 说明 在运行DevEco Studio工程时&#xff0c;建议每一个运行窗口有2GB以上的可用内存空间。 创建和配置新工程 DevEco Studio提…

【图文并茂】ant design pro 如何对接后端个人信息接口

上一节我们有讲到如何对接登录接口的 【图文并茂】ant design pro 如何对接登录接口 仅仅能登录是最基本的&#xff0c;但是我们要进入后台还是需要另一个接口。 这个接口有两个作用&#xff1a; 来获取当前登录账号的信息&#xff0c;比如头像&#xff0c;用户名&#xff0…

Springsecurity中的Eureka报错:Cannot execute request on any known server

完整报错信息&#xff1a; com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错体现&#xff1a; 访问eureka控制面板&#xff1a; 访问测试地址&#xff1a; 控制台报错&#xff1a; 可能的报错原因&#xff…

【YOLOv8改进[Conv]】 感受野注意力卷积RFAConv(2024.3)| 使用RFAConv改进C2f + 含全部代码和详细修改方式

本文将进行在YOLOv8中使用 感受野注意力卷积RFAConv改进C2f 的实践,助力YOLOv8目标检测效果,文中含全部代码、详细修改方式。助您轻松理解改进的方法。 改进前和改进后

WEB渗透免杀篇-Golang免杀

全套完整笔记 渗透测试60w字全套md笔记&#xff1a;夸克网盘分享 往期文章 WEB渗透免杀篇-免杀工具全集-CSDN博客 WEB渗透免杀篇-加载器免杀-CSDN博客 WEB渗透免杀篇-分块免杀-CSDN博客 WEB渗透免杀篇-Powershell免杀-CSDN博客 WEB渗透免杀篇-Python源码免杀-CSDN博客 …

快手小店自动回复机器人脚本

快手小店自动回复机器人是一种利用人工智能AI技术&#xff0c;能够根据用户的会话咨询内容自动回复的工具。这种机器人可以帮助快手小店主快速、高效地回复客户消息&#xff0c;提升店铺的客户服务质量和销售效率。 甜羊浏览器是一款基于Chromium内核开发的国产浏览器&#xff…

解决html中文乱码问题

在head上面添加 <% page contentType"text/html;charsetUTF-8" language"java" %>

大模型之二十六-Diffusion model实例浅析

在2022年&#xff0c;midjourney、DALL-E以及Stable Diffusion三个文生图模型引爆了机器生产文生图领域&#xff0c;他们的模型能够在可控条件&#xff08;标签、文本描述&#xff09;下生成高分辨率、细节丰富的多样性图像&#xff0c;这在视觉上往往难以与真实图像区分。本文…

SAP Document Splitting

SAP系统中的文档分割&#xff08;Document Splitting&#xff09;是一个用于在财务会计模块中进行更细粒度的财务报表分析的技术。它允许按照不同的标准&#xff08;如成本中心、利润中心、公司代码等&#xff09;对会计凭证进行详细记录和报表展示。文档分割的主要目标是提高财…

前沿重器[55] | prompt综述的解释和个人思考

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

幅频特性曲线分析及使用WPF绘制

文章目录 1、一阶惯性环节的幅频特性曲线分析及绘制2、二阶系统的幅频特性曲线分析及绘制3、一般的系统4、上位机代码实现4.1 一阶惯性系统4.2 二阶系统 5、稳定裕度5.1 幅值裕度5.2 相角裕度 参考 1、一阶惯性环节的幅频特性曲线分析及绘制 这里的a和b可以根据系统的不同修改,…

2000-2023年上市公司财务困境RLPM模型数据(含原始数据+计算结果)

2000-2023年上市公司财务困境RLPM模型数据&#xff08;含原始数据计算结果&#xff09; 1、时间&#xff1a;2000-2023年 2、来源&#xff1a;上市公司年报 3、指标&#xff1a;证券代码、证券简称、统计截止日期、是否剔除ST或*ST或PT股、是否剔除上市不满一年、已经退市或…

【binder】【android12】【2.servicemanager启动——全源码分析】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

入门Java编程的知识点—>面向对象(day07)

重点掌握什么是面向对象&#xff1f;重点掌握面向对象封装的意义&#xff1f;重点掌握类的封装,创建对象,访问对象&#xff1f; 面向对象 OO&#xff1a;&#xff08;Object Oriented&#xff09;面向对象 面向对象是一种编程思想,遵循面向对象设计原则可以写出高质量代码, …

sheng的学习笔记-AI-生成式方法

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 需要额外的知识对应连接&#xff1a; EM&#xff1a;sheng的学习笔记-AI-EM算法-CSDN博客 贝叶斯&#xff1a; sheng的学习笔记-AI-贝叶斯&#xff08;Bayesian&#xff09;分类-CSDN博客 高斯混合模型&#xff1a;shen…