tomcat 配置ssl加密证书访问

tomcat 配置ssl加密证书访问

ssl证书

SSL 证书,现在更准确的叫法是 TLS 证书,是一种数字证书,用于在客户端(如浏览器)和服务器之间建立加密的、可信的安全连接。
核心功能

  • 加密传输,防止数据被窃听或篡改
  • 身份验证,证明服务器身份,防止中间人攻击(MITM)
  • 完整性保护,确保传输数据未被篡改

证书的类型
按验证级别分类:

类型 验证内容 适用场景 浏览器显示
DV(域名验证) 仅验证域名所有权 个人博客、测试站点 🔒 小锁图标
OV(组织验证) 验证域名 + 组织真实性 企业官网 🔒 + 组织名称
EV(扩展验证) 严格验证企业合法性 银行、电商 🔒 + 绿色地址栏(部分浏览器)

按签发方式分类:

类型 说明 信任度
自签发证书 自己生成并签名 ❌ 不被浏览器信任
CA 签发证书 由受信任的证书颁发机构签发 ✅ 被浏览器信任

这次测试使用自签证书即可

生成自签证书

在服务器上使用openssl进行生成证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout key.pem -out cert.pem

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@iv-yedtc38xs0cva4fjm6or test-key]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout key.pem -out cert.pem
.......+....+.....+...+.+..+..........+..+.+............+..+......+.......+..+.+.....+............+.......+..+...............+.+............+..+.............+.....+++++++++++++++++++++++++++++++++++++++*..+.....+...+.+..+....+++++++++++++++++++++++++++++++++++++++*........+..+..........+.....+..........+...+...+...+..+...+......+...+.+......+..........................+....+......+...+..+...+......+.+.....+.............+..+....+...+......+..+.......+..+...+......+............+...+......+.+..++++++
.+...........+...+.+.....+.........+...+....+......+..............+.+..............+...+...+....+++++++++++++++++++++++++++++++++++++++*.+++++++++++++++++++++++++++++++++++++++*.......+.....+.+.....+..........+..+.......+...+..+....+.........+.....+...++++++
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:www.test.com
Email Address []:
[root@iv-yedtc38xs0cva4fjm6or test-key]# ll
total 8
-rw-r--r-- 1 root root 1346 Jan 31 12:38 cert.pem
-rw------- 1 root root 1704 Jan 31 12:38 key.pem

执行完成之后会在当前目录生成两个证书文件。

以下是 openssl req 交互式提示中各字段的含义及填写建议:

字段 说明 是否必填 建议
Country Name (2 letter code) 国家代码(2字母 ISO 标准) ❌ 可为空 建议填写,如 CN(中国)、US(美国)
State or Province Name 省/州全名 ❌ 可为空 BeijingGuangdong
Locality Name 城市名称 ❌ 可为空 BeijingShenzhen
Organization Name 组织/公司名称 ❌ 可为空(DV 证书)
✅ 必填(OV/EV 证书)
个人测试可留空或填 MyOrg
Organizational Unit Name 部门/组织单元 ❌ 可为空 IT DepartmentDevOps
Common Name (CN) 通用名称 ⚠️ 传统上必填 重要:应填写主域名(如 www.test.com
⚠️ 现代浏览器更依赖 SAN,但建议仍填写
Email Address 联系邮箱 ❌ 可为空 可留空或填管理员邮箱

配置tomcat

记住刚刚生成的证书路径,并修改tomcat中的中配置文件server.xml,配置前可以先做备份
在配置文件中找到关于8443(默认端口,可以修改为自己喜欢的)端口配置的connector,这是默认是注释掉的,需要手动把注释取消
在这里插入图片描述
将配置改成如下所示:

1
2
3
4
5
6
7
8
9
10
11
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true"
maxParameterCount="1000"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="/usr/local/tomcat/key/key.pem"
certificateFile="/usr/local/tomcat/key/cert.pem"
type="RSA" />
</SSLHostConfig>
</Connector>

certificateKeyFile 替换为生成的key.pem的证书文件
certificateFile 替换为生成的cert.pem证书文件
certificateChainFile 证书链文件,不需要,可以直接删除

注意:Connector的protocol这个参数,这是默认使用的是apr的工作模式,如果当前服务器没有启用arp工作模式的话,建议该参数修改为nio的工作模式。例如:protocol="org.apache.coyote.http11.Http11NioProtoco

重启tomcat并测试

  • 重启tomcat
  • 检查8443端口是否监听
  • 查看catalina.out 日志是否存在报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@centos-manager bin]# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@centos-manager bin]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@centos-manager bin]#
[root@centos-manager bin]# ss -luntp | grep 8443
tcp LISTEN 0 100 :::8443 :::* users:(("java",pid=107671,fd=61))
[root@centos-manager bin]# tail -F /usr/local/tomcat/logs/catalina.out
... 37 more
31-Jan-2026 13:07:43.418 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/usr/local/apache-tomcat-9.0.115/webapps/manager]的部署已在[34]毫秒内完成
31-Jan-2026 13:07:43.426 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
31-Jan-2026 13:07:43.435 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-openssl-nio-8443"]
31-Jan-2026 13:07:43.439 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina1]
31-Jan-2026 13:07:43.439 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.115]
31-Jan-2026 13:07:43.447 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [/usr/local/apache-tomcat-9.0.115/webapps1/ROOT]
31-Jan-2026 13:07:43.510 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[/usr/local/apache-tomcat-9.0.115/webapps1/ROOT]的部署已在[64]毫秒内完成
31-Jan-2026 13:07:43.510 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-apr-8081"]
31-Jan-2026 13:07:43.537 信息 [main] org.apache.catalina.startup.Catalina.start [1013]毫秒后服务器启动
  • 测试
    使用https://IP地址:8443/,可以查看到网页的正常内容
    在这里插入图片描述

tomcat 配置ssl加密证书访问
https://www.situgou.top/2026/02/01/tomcat-ssl加密证书访问/
作者
xqj_Blog
发布于
2026年2月1日
许可协议