https使用tomcat 443端口

本文介绍如何将Tomcat服务器从8080端口迁移至443端口,并启用HTTPS服务。通过修改server.xml文件中的Connector标签即可实现端口切换。若遇到启动失败错误,需使用root权限启动Tomcat。

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

因为小程序用到https和443端口
之前已经成功配置了ssl证书,现在开始更改端口

之前的配置server.xml:

<Connector port="8080" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/baidu.com.jks"
    keystorePass="48os1yb85ss2h"
    clientAuth="false" sslProtocol="TLS" /> 

更改为:

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    keystoreFile="conf/baidu.com.jks"
    keystorePass="48os1yb85ss2h"
    clientAuth="false" sslProtocol="TLS" /> 

对就是这么简单,只改一个端口,(之前我改了很多地方的端口,越改越乱,到最后发现原来只改这里的就可以了)

注意:你改完后,重启tomcat发现:

org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-443]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:549)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:875)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:632)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:655)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:995)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    ... 12 more
Caused by: java.net.SocketException: Permission denied
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:433)
    at sun.nio.ch.Net.bind(Net.java:425)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:210)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1086)
    at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:268)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
    at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
    ... 13 more

这时候你要淡定:

你要用root用户去启动你的tomcat

ubuntu@VM-220-186-ubuntu:/usr/tomcat8/apache-tomcat-8.5.31/bin$ su root
Password: 
root@VM-220-186-ubuntu:/usr/tomcat8/apache-tomcat-8.5.31/bin# ./startup.sh 

root@VM-220-186-ubuntu:/usr/tomcat8/apache-tomcat-8.5.31/bin# ./startup.sh 
Using CATALINA_BASE:   /usr/tomcat8/apache-tomcat-8.5.31
Using CATALINA_HOME:   /usr/tomcat8/apache-tomcat-8.5.31
Using CATALINA_TMPDIR: /usr/tomcat8/apache-tomcat-8.5.31/temp
Using JRE_HOME:        /usr/jdk1.8.0/jdk1.8.0_151/jre
Using CLASSPATH:       /usr/tomcat8/apache-tomcat-8.5.31/bin/bootstrap.jar:/usr/tomcat8/apache-tomcat-8.5.31/bin/tomcat-juli.jar
Tomcat started.

如果不知道root密码,就去设置一个,su passwd

### Tomcat 中配置 443 端口以支持 HTTPS 的设置教程 要在 Tomcat 中启用 443 端口并支持 HTTPS 访问,需完成以下几个核心操作: #### 1. **生成 SSL 证书** SSL/TLS 是实现 HTTPS 所必需的技术基础。可以通过 Java Keytool 工具生成自签名证书或导入由 CA 提供的正式证书。 运行以下命令生成密钥库文件 `keystore.jks` 和证书: ```bash keytool -genkeypair -alias tomcat -keyalg RSA -keystore keystore.jks -storepass changeit -validity 365 ``` 此命令会创建一个有效期为一年的自签名证书[^3]。 #### 2. **修改 server.xml 文件** 进入 Tomcat 安装目录中的 `conf/server.xml` 文件,找到 `<Connector>` 节点部分,并添加或调整如下配置项来启用 HTTPS 支持: ```xml <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="200" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="path/to/keystore.jks" type="JKS" certificateKeystorePassword="changeit"/> </SSLHostConfig> </Connector> ``` 上述配置中需要注意的关键参数包括但不限于: - `port`: 设定为标准 HTTPS 端口443。 - `certificateKeystoreFile`: 指向之前生成的密钥库路径。 - `certificateKeystorePassword`: 密钥库密码,默认为 `changeit`。 如果使用的是正式证书而非自签名,则需要替换对应的 `.pfx` 或其他格式的证书文件及其密码字段。 #### 3. **验证防火墙与操作系统权限** 即使完成了以上两步,在某些情况下仍然可能遇到无法通过外部网络访问的情况。这通常是因为服务器的操作系统层面未开放该端口或者存在防火墙阻止连接请求的现象。因此还需要执行下列额外检查工作: - 使用命令行工具确认本地服务已绑定到指定 IP 地址上监听流量: ```bash netstat -an | grep :443 ``` - 如果发现确实没有启动成功,则可能是由于低版本 JDK 不兼容 NIO 协议等原因引起;此时可尝试降级至传统 BIO 方式重新定义协议类型为 `HTTP/1.1` 并去掉相关属性声明[^1]。 另外还需确保 Linux/macOS 下 `/etc/hosts.allow` 及 Windows 防火墙策略允许来自任意地址对该特定端口发起的数据交换活动[^2]。 最后记得保存所有更改后的文档副本以防万一出现问题便于回滚恢复原始状态! ```python import os os.system('netstat -an | grep ":443"') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值