Tomcat 配置 HTTPS 访问全攻略(CentOS 环境)

Tomcat 配置 HTTPS 访问全攻略(CentOS 环境)

一、环境说明

  • 操作系统:CentOS
  • Tomcat 版本:Apache Tomcat/9.0.105
  • 服务器 IP:192.168.1.35
  • 目标:将 Tomcat 默认的 HTTP 访问升级为 HTTPS,提升通信安全性

二、操作步骤详解

(一)查询 JDK 目录

通过以下命令确认 JDK 安装路径:

echo $JAVA_HOME

预期输出

/opt/jdk1.8.0_451

关键点:后续操作需依赖 JDK 自带的keytool工具,确保路径正确。

(二)使用 keytool 生成证书

1. 进入 JDK 的 bin 目录
cd $JAVA_HOME/bin
2. 执行证书生成命令
./keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat.keystore -validity 36500
3. 交互配置说明
  • 密钥库口令:设置证书存储密码(如:123456)
  • 个人信息:依次输入姓名、组织单位、组织名称、地区等(示例:CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
  • 密钥口令:可与密钥库口令保持一致,直接按回车
4. 参数解析
  • -keystore:指定证书存储路径及文件名(本例存放在/usr/local/目录,文件名为tomcat.keystore)
  • -validity:证书有效期(36500 天≈100 年,默认 90 天)

(三)配置 Tomcat 服务器

1. 修改 conf/server.xml

原 HTTP 连接器配置(修改前)

<Connector port="8800" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxParameterCount="1000"/>

修改点

  • 将redirectPort从 8443 改为 443(HTTPS 默认端口)

新增 HTTPS 连接器配置

<Connector port="443"protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150"SSLEnabled="true"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS"keystoreFile="/usr/local/tomcat.keystore"keystorePass="123456"/>

注意事项

  • protocol必须使用Http11NioProtocol,不可用HTTP/1.1
  • keystoreFile路径需与实际证书存储路径一致(Linux 系统注意路径大小写)
2. 配置 conf/web.xml 安全约束

在</welcome-file-list>标签后添加以下内容:

<login-config><!-- 客户端证书认证 --><auth-method>CLIENT-CERT</auth-method><realm-name>Client Cert Users-only Area</realm-name></login-config><security-constraint><!-- 保护所有Web资源 --><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>

配置意义

  • CLIENT-CERT 认证:要求客户端提供有效证书方可访问
  • CONFIDENTIAL 传输:确保所有数据通过 SSL/TLS 加密传输,防止窃听

(四)重启 Tomcat 服务

# 停止服务

./shutdown.sh

# 启动服务

./startup.sh

三、访问验证与常见问题

(一)浏览器访问测试

  • 访问地址:https://192.168.1.35:443
  • 预期结果
  • 首次访问可能出现安全警告(因使用自签名证书)
  • 点击 “高级”→“继续访问” 可进入 Tomcat 欢迎页面

(二)证书信息查看

  • 证书主题信息:
  • 颁发者:自签名(CN=chen, OU=LG, O=LG, L=guangdong, ST=guangdong, C=CN)
  • 有效期:从当前时间起 100 年
  • 公钥信息:RSA 算法,2048 位密钥长度

(三)安全警告处理

  • 原因:自签名证书未经过 CA 机构认证
  • 解决方案
  1. 生成证书请求(CSR)并提交给正规 CA 机构申请证书
  2. 使用keytool -importkeystore命令将证书转换为 PKCS12 格式(参考生成证书时的警告提示)

四、总结

通过以上步骤,成功在 CentOS 环境下为 Tomcat 9 配置了 HTTPS 访问。核心要点包括:

  1. 使用keytool生成自签名证书并正确配置路径
  2. 在server.xml中添加 HTTPS 连接器并指定证书信息
  3. 通过web.xml强制要求加密传输和客户端证书认证

生产环境中建议替换为 CA 签名证书以消除浏览器警告,进一步提升安全性。如需进一步优化性能,可考虑启用 TLSv1.2 + 协议并配置加密套件策略。

参考资料

  • Tomcat 官方 HTTPS 配置指南
  • Keytool 命令行参考手册

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

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

相关文章

Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)

一、引言:为什么 Flink 运维监控如此重要? 在实时计算场景中,Flink 作业 724 小时运行,对性能、资源、故障感知、状态变化的实时监控非常关键。没有有效的运维可观测体系: 不知道任务是否在稳定运行 发生问题难以快速定位 无法感知背压、延迟、反压等状态 因此,构建完善…

【prometheus+Grafana篇】基于Prometheus+Grafana实现Oracle数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…

【数据仓库面试题合集③】实时数仓建模思路与实践详解

实时数据仓库已经成为各大企业构建核心指标监控与业务实时洞察的基础能力。面试中,关于实时建模的题目频繁出现,尤其聚焦于建模思路、宽表设计、状态管理、乱序处理等方面。本文整理典型题目及答题思路,帮助你应对相关考察。 一、建模原则与数仓分层认知 1. 实时数仓与离线…

鸿蒙PC操作系统:从Linux到自研微内核的蜕变

鸿蒙PC操作系统是否基于Linux内核,需要结合其技术架构、发展阶段和官方声明综合分析。以下从多个角度展开论述: 一、鸿蒙操作系统的多内核架构设计 多内核混合架构 根据资料,鸿蒙操作系统(HarmonyOS)采用分层多内核架构,内核层包含Linux内核、LiteOS-m内核、LiteOS-a内核…

LabVIEW数据库使用说明

介绍LabVIEW如何在数据库中插入记录以及执行 SQL 查询&#xff0c;适用于对数据库进行数据管理和操作的场景。借助 Database Connectivity Toolkit&#xff0c;可便捷地与指定数据库交互。 各 VI 功能详述 左侧 VI 功能概述&#xff1a;实现向数据库表中插入数据的操作。当输入…

【docker】--docker file编写教程

文章目录 构建docker file 镜像常用命令速查表一、基础指令&#xff08;指定镜像和执行命令&#xff09;二、构建上下文管理三、设置镜像内部环境四、容器运行配置五、多阶段构建&#xff08;可选进阶&#xff09; 构建docker file 镜像 # -f 指定dockerfile # -t 镜像名和tag…

WeakAuras Lua Script <BiaoGe>

WeakAuras Lua Script <BiaoGe> 表格拍卖插件WA字符串 表格字符串代码&#xff1a; !WA:2!S3xA3XXXrcoE2VH9l7ZFy)C969PvDpSrRgaeuhljFlUiiSWbxaqXDx(4RDd0vtulB0fMUQMhwMZJsAO5HenLnf1LPSUT4iBrjRzSepL(pS)e2bDdWp5)cBEvzLhrMvvnAkj7zWJeO7mJ8kYiJmYiImYF0b(XR)JR9JRD…

虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡?

虚幻引擎5-Unreal Engine笔记之什么时候新建GameMode,什么时候新建关卡&#xff1f; code review! 参考笔记&#xff1a; 1.虚幻引擎5-Unreal Engine笔记之GameMode、关卡&#xff08;Level&#xff09; 和 关卡蓝图&#xff08;Level Blueprint&#xff09;的关系 2.虚幻引擎…

开源模型应用落地-模型上下文协议(MCP)-Resource Template-资源模板的使用逻辑(六)

一、前言 在数字化进程加速的今天,如何高效管理动态资源已成为开发者们的核心课题。Resource Template(资源模板)作为Model Context Protocol(MCP)中的关键机制,正通过参数化设计重新定义资源调用的边界——它不仅是静态数据的容器,更是动态上下文生成的引擎。与传统的R…

uniapp小程序获取手机设备安全距离

utils.js let systemInfo null;export const getSystemInfo () > {if (!systemInfo) {systemInfo uni.getSystemInfoSync();// 补充安全区域默认值systemInfo.safeAreaInsets systemInfo.safeAreaInsets || {top: 0,bottom: 0,left: 0,right: 0};// 确保statusBarHei…

【线下沙龙】NineData x Apache Doris x 阿里云联合举办数据库技术Meetup,5月24日深圳见!

5月24日下午&#xff0c;NineData 将联合 Apache Doris、阿里云一起&#xff0c;在深圳举办数据库技术Meetup。本次技术沙龙聚焦「数据实时分析」与「数据同步迁移」 两大核心领域&#xff0c;针对企业数据战略中的痛点&#xff0c;特邀行业资深技术大咖&#xff0c;结合多年技…

企业网站架构部署与优化 --web技术与nginx网站环境部署

一、Web 基础 本节将介绍Web 基础知识,包括域名的概念、DNS 原理、静态网页和动态网页的 相关知识。 1、域名和DNS 1.1、域名的概念 网络是基于TCP/IP 协议进行通信和连接的&#xff0c;每一台主机都有一个唯一的标识(固定的IP 地址),用以区别在网络上成千上万个用户和计算机。…

java实现poi-ooxml导出Excel的功能

文章目录 1. 添加poi-ooxml依赖2. Excel导出工具类3.核心逻辑说明4.扩展建议5.HSSF、XSSF、SXSSF 的核心原则和场景建议&#xff0c;帮助你在不同需求下快速决策&#xff1a; 以下是一个基于 Apache POI 实现的简单、通用的Java导出Excel工具类&#xff0c;代码逻辑清晰且注释详…

Nginx端口telnet不通排查指南

nginx已经配置server及端口20002&#xff0c;telnet不通&#xff1a;telnet 127.0.0.1 20002 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused 一、检查 systemctl status nginx.service nginx: [emerg] bind() to 0.0.0.0:20002 failed (13…

【RabbitMQ】消息丢失问题排查与解决

RabbitMQ 消息丢失是一个常见的问题&#xff0c;可能发生在消息的生产、传输、消费或 Broker 端等多个环节。消息丢失的常见原因及对应的解决方案&#xff1a; 一、消息丢失的常见原因 1. 生产端&#xff08;Producer&#xff09;原因 (1) 消息未持久化 原因&#xff1a;生产…

docker默认存储迁移

在容器化场景下默认存储路径为&#xff08;/var/lib/docker&#xff09;大多数平台根目录不支持系统盘扩容&#xff0c;会有空间不足风险隐患&#xff0c;因未配置持久化存储导致容器数据丢失。以迁移Docker存储路径至大容量/data目录说明 一、停止容器 systemctl stop docke…

【Golang笔记02】函数、方法、泛型、接口学习笔记

Golang笔记02&#xff1a;函数、方法、泛型、接口学习笔记 一、进阶学习 1.1、函数 go中的函数使用func关键字进行定义&#xff0c;go程序的入口函数叫做&#xff1a;main&#xff0c;并且必须是属于main包里面。 1.1.1、定义函数 &#xff08;1&#xff09;普通函数 go中…

LLM笔记(九)KV缓存调研

KV 缓存 (Key-Value Cache) 技术详解 KV 缓存&#xff08;Key-Value Cache&#xff09;是在 Transformer 模型&#xff08;尤其是 Decoder-Only 架构或 Encoder-Decoder 架构的 Decoder 部分&#xff09;进行自回归 (auto-regressive) 推理生成序列时&#xff0c;一种至关重要…

【Boost搜索引擎】构建Boost站内搜索引擎实践

目录 1. 搜索引擎的相关宏观原理 2. 正排索引 vs 倒排索引 - 搜索引擎具体原理 3. 编写数据去标签与数据清洗的模块 Parser 去标签 编写parser 用boost枚举文件名 解析html 提取title ​编辑 去标签 构建URL 将解析内容写入文件中 4. 编写建立索引的模块 Index 建…

LeetCode 热题 100 1.两数之和

目录 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 思路&#xff1a; 思路一暴力遍历&#xff1a; 代码&#xff1a; 暴力遍历Java代码&#xff1a; 题目&#xff1a; 题目描述&#xff1a; 题目链接&#xff1a; 1. 两数之和 - 力扣&#xff08;LeetC…