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

news2024/9/17 7:22:20

利刃出鞘_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

再次输入新口令: dzs168

D:\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.coloradmin.cn/o/2073516.html

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

相关文章

轻松实现PDF转图片!2024四大实用工具推荐!

有时候我们需要将PDF文件中的内容转换为图片格式&#xff0c;以便在不同的平台和设备上更好地展示和分享。"PDF转图片"这一需求催生了众多转换工具的出现&#xff0c;它们以高效、便捷的服务帮助用户轻松实现格式转换。 福昕PDF转换大师&#xff08;365客户端&#…

JAVA Future类详解

在编程中&#xff0c;Java中的"Future"是一个接口&#xff0c;代表是作为主线程开辟的一个分支任务&#xff0c;处理耗时的业务&#xff0c;并且可以可以为主线程最终返回异步计算的结果。此外&#xff0c;它提供了检查计算是否完成&#xff0c;等待其完成&#xff0…

ISP 3A 算法:自动曝光(AE)中的平均亮度法详解

在自动曝光&#xff08;AE&#xff09;算法中&#xff0c;平均亮度法是一种经典且广泛应用的技术。它通过计算场景中所有像素的平均亮度来确定最佳曝光设置&#xff0c;从而保证图像的整体亮度处于适当的水平。尽管该方法相对简单&#xff0c;但它在AE算法中扮演着重要的角色&a…

仕考网:专科考公好考吗?有岗位吗?

2024年&#xff0c;国家公务员以及大多数省市的公务员考试接受至少拥有大专学历的考生。某些特定职位&#xff0c;例如上海市和北京市的岗位&#xff0c;可能要求考生必须持有本科或以上学历才能参与考试。 属于国家公务员考试、省直属单位、市直属单位以及中央直属单位的职位…

奥斯卡影后斯特里普和马丁肖特在最近的这次约会后再次引发热议

奥斯卡影后斯特里普和马丁肖特在最近的这次约会后再次引发热议 2024-08-24 00:00 发布于&#xff1a;河北省 自从梅丽尔斯特里普于 2023 年与相恋多年的丈夫分手以来&#xff0c;媒体对她的关注度只增不减。毕竟&#xff0c;这是好莱坞最著名的女演员 40 多年来第一次单身&…

手机投屏到电脑显示(Android -> win11)

文章目录 1.电脑安装“无线显示”功能2.系统->投影到此电脑3.手机进入无线投屏功能更 1.电脑安装“无线显示”功能 选择 “开始 ”> “设置 ”> “系统 > 投影到此 PC ”。 在 Add the ‘Wireless Display’ optional feature to project to this PC &#xff08;…

ELK进阶-安全认证设置流程介绍

目录 一、前言 二、ElasticSearch的安全认证配置 设置ElasticSearch的安全认证功能&#xff08;最低&#xff09; 启用TLS/SSL加密通信 &#xff08;1&#xff09;生成CA证书 &#xff08;2&#xff09;生成transport证书 &#xff08;3&#xff09;生成http证书 &#…

小米汽车每台亏6万,背后的认知格局

最近&#xff0c;小米汽车传出一则新闻&#xff1a;一台车亏损了6万块钱。这则消息一出&#xff0c;遭到了同行车企负责人的谩骂&#xff0c;并对雷军进行了直接攻击。对方指责雷军&#xff1a;“你亏损6万块钱还卖车干什么&#xff1f;你就是因为不亏卖不掉&#xff0c;所以才…

宠物毛发不除对身体有什么危害?除毛好的小型空气净化器分享

身为呼吸科医生&#xff0c;我亲眼见证过不少因环境因素导致的呼吸问题。在享受养猫乐趣的同时&#xff0c;我也时刻关注着它们可能带来的健康隐患&#xff0c;尤其是毛发中的细菌问题。我发现&#xff0c;不少年轻人对宠物毛发可能携带的细菌威胁缺乏足够认识。今天&#xff0…

golang多版本管理工具g

一、golang多版本管理工具g 一&#xff09;g简介 g是一个Linux、macOS、Windows下的命令行工具&#xff0c;可以提供一个便捷的多版本go环境的管理和切换 二&#xff09;g特性 支持列出可供安装的go版本号支持列出已安装的go版本号支持在本地安装多个go版本支持卸载已安装的go…

数据缓存软件Redis推出Redis 8 这更改许可证后首个重大版本更新

2024 年 3 月流行的数据库缓存应用 Redis 宣布修改开源许可证&#xff0c;此次修改许可证的目的本质上就是避免大型云计算公司白嫖&#xff0c;例如亚马逊的 AWS 等。AWS 等云计算服务商基于 Redis 推出托管服务并向客户收费&#xff0c;作为开发商 Redis 并没有获得收益&#…

还没做过电子版招生简章的老师看过来!

随着科技的不断发展&#xff0c;传统的招生简章逐渐走向数字化&#xff0c;电子版招生简章以其便捷、环保、可更新等优势&#xff0c;越来越受到各学校的青睐。如果你还不会制作电子版招生简章&#xff0c;那就赶紧来看看这篇文章吧&#xff01; 一、电子版招生简章的优势 1. …

【PHP入门教程】PHPStudy环境搭建+composer创建项目

文章目录 PHP 的历史PHP 的用途PHP 的特点和优势PHP 环境搭建环境准备安装window 安装CentOS / Ubuntu / Debian 安装 第一个Hello World使用Apache服务运行命令行运行代码 Composer安装 Composer&#xff1a;安装途中报错解决&#xff1a;初始化项目创建文件最终文件目录Compo…

记录练习reserve(强网先锋ADmingyue)

1.强网 64位无壳&#xff0c;ida拖入。 复制qiangwangxianfengjiushini到v6缓冲区&#xff0c;拷贝ZmxhZ3ttYWZha3VhaWxhaXFpYW5kYW9ifQ前36个字符(正好是36)到v5缓冲区&#xff0c;因为存在“”符号&#xff0c;应该是base64&#xff0c;下文for循环遍历v4与v5的每个字符(即解…

k8s跨节点后pod无法访问

场景 k8s在node1节点部署nginx后&#xff0c; 除node1外&#xff0c;主节点以及node2节点都无法正常访问nginx 并且主节点以及node2节点都无法ping通node1节点上的pod 网络插件为calico 并且也没有相关路由信息 解决方案 启动tunl0接口&#xff0c;因为calico需要使用tunl0网…

Wireshark_UDP_v7.0

Wireshark_UDP_v7.0 就随便在浏览器上访问点什么&#xff0c;然后抓包&#xff0c;过滤输入udp&#xff0c;然后回答问题。 本来试的哔哩哔哩视频和在线扫雷&#xff0c;emmm没有udp&#xff0c;最后还是得原神启动 source port、destination port、length、checksum source…

【力扣】地下城游戏

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ 恶魔们抓住了公…

SQLSugar入门篇:快速上手与基础概念

文章目录 前言一、框架简介二、环境搭建与安装1.net core和.net5/.net6/.net7/.net8/.net9环境2.net framework4.6 环境 三、环境搭建与安装1.对象说明2.原生模式&#xff1a;SqlSugarClient3.单例模式&#xff1a;SqlSugarScope4.多库用法5.连接参数 四、实体类映射1.实体使用…

大数据技术之Flume事务及内部原理(3)

目录 Flume Agent 架构概述 Flume Agent 内部工作流程 Flume Agent 的配置 Flume Agent内部重要组件 ChannelSelector SinkProcessor Apache Flume 是一个分布式的、可靠的、可用的服务&#xff0c;用于有效地收集、聚合和移动大量日志数据。它具有简单灵活的架构&#x…

C语言典型例题51

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.3 while循环与do……while循环的比较 代码&#xff1a; &#xff08;1&#xff09;while语句 #include <stdio.h> int main() {int sum0;// char ch;while(1){sum0;//每一次输入结束后数的和重置int …