Tomcat 配置https 踩坑

本文记录了一位开发者在将Tomcat服务器从HTTP切换到HTTPS过程中遇到的困难,包括证书生成、配置服务及端口开放等问题。在尝试了多种方案并最终通过localhost访问发现问题所在后,通过阿里云服务器的安全组策略配置解决了外网访问问题。作者强调了思路转换、基础知识提升和问题排查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:


公司项目目前是部署在tomcat上用http的形式来访问的,可以通过外网IP和域名加端口号进行访问,然后因为要做个微信小程序的功能,小程序的平台配置里面后台通讯好像又必须是https 的方式访问,于是就准备给tomcat 配置一下https 的访问方式.然后没想到,这个坑整整搞了我三天时间,期间又掉了无数的头发.
环境t : omcat 9.0(http 方式IP和域名都可以正常访问) + 阿里云服务器 + 菜鸟一枚    

现象:

根据网络上的配置,配置完成后不管是在服务器上还是在其他机器上用https+域名用IP访问都是失败但是在本机上用https:localhost和https:127.0.0.0.1的方式可以访问,然后用http的方式是IP和域名都是正常可以访问的;防火墙是关闭的,端口也已经开放了,这就很纳闷了!之前一度怀疑是tomcat的配置有问题,各种百度尝试.也猜测过是不是证书有问题不能自己生成的

配置:

配置方法网络上百度了一堆,基本都是类似的也没有问题,都是通过keytool 的命令生成ssl 证书,然后在tomcat 的service.xml 文件里面增加一个https 的配置.只不过,百度上各种版本有几个问题:

  1. 在生成证书的时候输完密码后有几个问题,有的人说那个姓氏的问题要填你的域名或者IP 不能乱填,但是这个我这边实验是没有影响的.
  2. 还有生成证书的时候会提示你说:[JKS 密钥库使用专用格式。建议使用]这个有人说要处理我没处理也可以;
  3. 然后还有些人配置说要生成那些客户端证书,服务端客户端互相信任,我试了如果只是单纯的访问的话只要做到生成SSL证书 然后配置service.xml 即可,但是访问的时候会提示不信任,忽略即可.

生成SSL证书命令(必须): 红色部分可以自己定义下同

keytool -genkey -v -alias tomcat1 -keyalg RSA -keystore E:/web/keyFile/tomcat1.keystore -validity 36500

生成客户端证书:

keytool -genkey -v -alias mykey  -keyalg RSA -storetype PKCS12 -keystore E:/web/keyFile/mykey.p12

通过上面生成的客户端证书导出可安装的证书:(123456是密码)

keytool -export -alias mykey  -keystore  E:/web/keyFile/mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file E:/web/keyFile/mykey.cer

客户端证书导入到证书库信任列表

keytool -import -v -file E:/web/keyFile/mykey.cer -keystore E:/web/keyFile/tomcat1.keystore

客户端信任服务器证书

keytool -keystore  E:/web/keyFile/tomcat1.keystore -export -alias tomcat1 -file  E:/web/keyFile/tomcat1.cer 

service.xml配置

<Connector port="9081" 
protocol="HTTP/1.1"            
connectionTimeout="20000"             
maxThreads="150"             
URIEncoding="UTF-8"             
clientAuth="false"             
sslProtocol="TLS"             
SSLEnabled="true"        
scheme="https"
secure="true"
keystoreFile="E:/web/key/tomcat1.keystore"             
keystorePass="123456"             />

 坑:

        按照上面的配置,配置完成后然后尝试通过https+域名+端口/https+外网IP+端口访问.一律失败;
但是通过http+域名+端口/http+外网IP+端口访问正常,然后有人然后各种尝试网上不同的配置差异.然后突然想到试试https+localhost/https+127.0.0.1/方式访问;竟然可以,喜极而泣.虽然没有成功但是至少有希望了.然后开始往这方面查询尝试;关防火墙,开放入站端口,还是不行,最终发现一个阿里云服务器要开通安全组策略配置(端口放行)阿里云服务器(ECS)实战--安全组策略配置(端口放行) - 百度文库

解决:

       生成ssl证书 + service配置 + 端口开放 + 服务器端口映射

       有个免费证书信任处理https://freessl.org/ 没有操作验证,感觉还挺靠谱的有需要可以了解一下.

反思:

  1. 这个排版感觉很干巴.都是大段大段文字看起来都不想看了,需要注意提升一下;
  2. 思路很重要,刚开始在配置上死磕纠结这个配置对不对,证书是不是有问题,一直往这两个方向搜索肯定是没有结果的,从localhost和127.0.0.1的尝试上转变思路去查就可以很快定位到问题
  3. 基础知识点提升,服务器的一些常识,请求http 的常识.
  4. 还有些知识点没有弄清楚,像那个互相信任的,证书的导入的.还有证书不信任的处理方式,单向信任双向信任概念,

<think>嗯,用户要查找Tomcat10.1.42配置指南,但引用的资料都是旧版本(9.0.58和8.5.60)。这说明用户可能正在升级环境或处理新项目,需要官方权威文档。用户提供的引用内容存在版本差异:引用[1]提到环境变量配置方式,引用[2]强调JDK7+和setenv脚本注意事项,这些在10.1版本依然适用。但引用[3]列出的服务器列表对当前问题帮助不大。考虑到Tomcat10属于JakartaEE规范,配置逻辑与老版本有重大差异:Servlet包名从javax变成jakarta。虽然基础环境变量(CATALINA_HOME/PATH)设置方式不变,但用户实际需要的是适配新规范的完整配置方案。观察到用户使用专业术语“configurationguide”,推测可能是运维或开发人员。为避免用户因版本迁移,除官方文档外,必须补充:1)JDK17+的版本要求(较引用[2]的JDK7大幅提升)2)特别注意context.xml里jakarta命名空间3)主动提供Windows/Linux双平台配置示例4)预判web.xml配置的常见兼容问题用户没有提应用场景,但Tomcat10主要用于现代SpringBoot/Jakarta应用,因此相关指引需要侧重云原生部署、HTTPS配置等企业级需求。最后补充的注意事项里强调JDK兼容性和日志配置,是因为这两个点在版本升级时最容易出错。</think> 以下是Tomcat 10.1.42配置指南的核心内容和步骤,结合官方文档与实际操作建议整理[^2][^3]: --- ### **一、环境变量配置(必需)** 1. **`CATALINA_HOME`** 定义Tomcat安装根目录(Windows/Linux通用): ```shell # Linux/macOS(添加到~/.bashrc或/etc/profile) export CATALINA_HOME=/opt/tomcat/apache-tomcat-10.1.42 export PATH=$PATH:$CATALINA_HOME/bin # Windows(系统环境变量) CATALINA_HOME = C:\apache-tomcat-10.1.42 PATH追加 %CATALINA_HOME%\bin ``` *若不配置,启动脚本可能无法定位路径[^2]。* 2. **`JAVA_HOME`或`JRE_HOME`** 指定JDK/JRE位置(优先使用`JAVA_HOME`): ```shell export JAVA_HOME=/usr/lib/jvm/java-17-openjdk # JDK 17+(Tomcat 10要求JDK 11+) ``` --- ### **二、自定义配置(可选)** 1. **`setenv`脚本** 在`$CATALINA_HOME/bin`下创建: - **Windows**: `setenv.bat` ```bat set JAVA_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8" ``` - **Linux**: `setenv.sh` ```bash export JAVA_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8" ``` *禁止在此脚本设置`CATALINA_HOME`或`CATALINA_BASE`[^2]。* 2. **`CATALINA_BASE`** 多实例部署时指向工作目录(默认等于`CATALINA_HOME`)。 --- ### **三、关键配置文件** | 文件路径 | 作用 | |---------|------| | `conf/server.xml` | 主配置(端口、连接器、Host等) | | `conf/web.xml` | 全局Servlet配置 | | `conf/context.xml` | 全局Context设置 | | `logs/catalina.out` | 启动日志(排查错误) | --- ### **四、验证安装** 1. 启动Tomcat: ```bash $ $CATALINA_HOME/bin/startup.sh # Linux > %CATALINA_HOME%\bin\startup.bat # Windows ``` 2. 访问默认页: `http://localhost:8080` → 显示Tomcat欢迎页即成功 --- ### **注意事项** 1. **JDK版本**:Tomcat 10.1.x需**JDK 11或更高版本**(官方强烈推荐JDK 17+)[^3] 2. **路径规范**:安装路径避免空格和中文字符 3. **权限问题**(Linux): ```bash chmod -R 755 $CATALINA_HOME/bin/*.sh ``` --- **官方文档**: 🔗 [Apache Tomcat® 10 - Documentation](https://tomcat.apache.org/tomcat-10.1-doc/index.html) - 配置详解:Chapter 3 "Setting Up" 和 Chapter 10 "Configuration Reference" --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值