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
[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 | 省/州全名 | ❌ 可为空 | 如 Beijing、Guangdong |
| Locality Name | 城市名称 | ❌ 可为空 | 如 Beijing、Shenzhen |
| Organization Name | 组织/公司名称 | ❌ 可为空(DV 证书) ✅ 必填(OV/EV 证书) |
个人测试可留空或填 MyOrg |
| Organizational Unit Name | 部门/组织单元 | ❌ 可为空 | 如 IT Department、DevOps |
| Common Name (CN) | 通用名称 | ⚠️ 传统上必填 | 重要:应填写主域名(如 www.test.com)⚠️ 现代浏览器更依赖 SAN,但建议仍填写 |
| Email Address | 联系邮箱 | ❌ 可为空 | 可留空或填管理员邮箱 |
配置tomcat
记住刚刚生成的证书路径,并修改tomcat中的中配置文件server.xml,配置前可以先做备份
在配置文件中找到关于8443(默认端口,可以修改为自己喜欢的)端口配置的connector,这是默认是注释掉的,需要手动把注释取消
将配置改成如下所示:
<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 日志是否存在报错
[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/,可以查看到网页的正常内容
更多推荐




所有评论(0)