使用https访问 Tomcat10配置端口号为443


前言 tomcat配置好了以后默认是使用8080端口访问的,也就是需要在使用"域名.com:8080"才能访问 。这篇总结一下如何修改tomcat配置,使可以用"http://域名.com"或"https://域名.com" 访问 。
【使用https访问 Tomcat10配置端口号为443】
前期准备 环境配置:

  • 腾讯云轻量应用服务器: centos 8.2 64bit
  • 远程访问推荐使用图形化界面(mac 建议royal tsx,windows建议mobaxterm)
  • tomcat 10.0.4 ;
  • java 1.8 ;
前提条件:
配置访问80端口即"http://域名.com"不需要证书
配置访问443端口即"https://域名.com" 需要ssl证书,证书可以从你购买服务器的运营商那里获取
具体操作步骤 话不多说,直接进入正题
编辑在 /usr/tomcat/*/conf 目录(这个目录是你安装tomcat的目录)下的 server.xml 文件 。添加如下内容:
// an highlighted block<connector port="443" protocol="http/1.1" sslenabled="true"  maxthreads="150" scheme="https" secure="true"#证书保存的路径  keystorefile="/usr/*/conf/域名.com.jks" #密钥库密码  keystorepass="******"  clientauth="false"/>详细 server.xml 文件和一些参数解释如下(可以直接复制过去):
<?xml version="1.0" encoding="utf-8"?><!--server 根元素,创建?个server实例,?标签有 listener、globalnamingresources、serviceport:关闭服务器的监听端?shutdown:关闭服务器的指令字符串--><server port="8005" shutdown="shutdown">    <!-- 创建 5 个监听器  start -->    <!-- 以?志形式输出服务器 、操作系统、jvm的版本信息 -->    <listener classname="org.apache.catalina.startup.versionloggerlistener"/>    <!-- 加载(服务器启动) 和 销毁 (服务器停?) apr 。如果找不到apr库, 则会输出?志, 并不影响 tomcat启动 -->    <listener classname="org.apache.catalina.core.aprlifecyclelistener" sslengine="on"/>    <!-- 避免jre内存泄漏问题 -->    <listener classname="org.apache.catalina.core.jrememoryleakpreventionlistener"/>    <!-- 加载(服务器启动) 和 销毁(服务器停?) 全局命名服务 -->    <listener classname="org.apache.catalina.mbeans.globalresourceslifecyclelistener"/>    <!-- 在context停?时重建 executor 池中的线程, 以避免threadlocal 相关的内存泄漏 -->    <listener classname="org.apache.catalina.core.threadlocalleakpreventionlistener"/>    <!-- 创建 5 个监听器  end -->    <!--         定义服务器全局的jndi 资源 命名服务    -->    <globalnamingresources>        <resource name="userdatabase" auth="container"                  type="org.apache.catalina.userdatabase"                  description="user database that can be updated and saved"                  factory="org.apache.catalina.users.memoryuserdatabasefactory"                  pathname="conf/tomcat-users.xml"/>    </globalnamingresources>    <!--            该标签?于创建 service 实例,默认使? org.apache.catalina.core.standardservice 。       默认情况下,tomcat 仅指定了service 的名称, 值为 "catalina" 。       service ?标签为 : listener、executor、connector、engine,       其中:       listener ?于为service添加?命周期监听器,       executor ?于配置service 共享线程池,(可以给多个 connector连接器使用)       connector ?于配置service 包含的链接器,       engine ?于配置service中链接器对应的servlet 容器引擎     -->    <service name="catalina">        <!-- 默认情况下,service 并未添加共享线程池配置 。如果我们想添加?个线程池, 可以在<executor> 下添加如下配置:              name:线程池名称,?于 connector中指定              nameprefix:所创建的每个线程的名称前缀,?个单独的线程名称为:nameprefix+线程编号              maxthreads:池中最?线程数              minsparethreads:活跃线程数,也就是核?池线程数,这些线程不会被销毁,会?直存在              maxidletime:线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000(1分钟),单位毫秒              maxqueuesize:在被执?前最?线程排队数?,默认为int的最?值,也就是?义的?限 。除?特殊情况,这个值 不需要更改,否则会有请求不会被处理的情况发?              prestartminsparethreads:启动线程池时是否启动 minsparethreads部分线程 。默认值为false,即不启动              threadpriority:线程池中线程优先级,默认值为5,值从1到10              classname:线程池实现类,未指定情况下,默认实现类为              org.apache.catalina.core.standardthreadexecutor 。              如果想使??定义线程池?先需要实现org.apache.catalina.executor接?-->        <executor name="tomcatthreadpool"                  nameprefix="catalina-exec-"                  maxthreads="200"                  minsparethreads="100"                  maxidletime="60000"                  maxqueuesize="integer.max_value"                  prestartminsparethreads="true"                  threadpriority="5"                  classname="org.apache.catalina.core.standardthreadexecutor"/>        <!--           connector 标签?于创建链接器实例,默认情况下,server.xml 配置了两个链接器,?个?持http协议,?个?持ajp协议           ?多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进?优化                port:                     端?号,connector ?于创建服务端socket 并进?监听, 以等待客户端请求链接 。如果该属性设置为0, tomcat将会随机选择?个可?的端?号给当前connector 使?                protocol:                     当前connector ?持的访问协议 。默认为 http/1.1 , 并采??动切换机制选择?个基于 java nio 的链接器或者基于本地apr的链接器(根据本地是否含有tomcat的本地库判定)                connectiontimeout:                     connector 接收链接后的等待超时时间, 单位为 毫秒 。-1 表示不超时 。                redirectport:                     如果当前接收的是一个 https 的请求,那么tomcat 会将请求转发到 redirectport指定的端口 。                     比如现在设定的:8443 端口当前connector 不?持ssl请求, 接收到了?个请求, 并且也符合security-constraint 约束,需要ssl传输,catalina?动将请求重定向到指定的端? 。                executor:                     指定共享线程池的名称, 也可以通过maxthreads、minsparethreads 等属性配置内部线程池 。                uriencoding:                     ?于指定编码uri的字符编码, tomcat8.x版本默认的编码为 utf-8 , tomcat7.x版本默认为iso8859-1 -->        <!--org.apache.coyote.http11.http11nioprotocol, ?阻塞式 java nio 链接器,tomcat8配置nio会报错,可能是已经集成了nio的原因-->        <connector port="80"                   protocol="http/1.1"                   connectiontimeout="20000"                   redirectport="443"                   executor="tomcatthreadpool"                   uriencoding="utf-8"/>        <!-- certificatekeystorefile 用于指定证书所在的目录 ;                        certificatekeystorepassword 用于指定证书的密码;type是使用的加密算法-->        <connector port="443" protocol="org.apache.coyote.http11.http11nioprotocol"                   maxthreads="150" schema="https" secure="true" sslenabled="true">            <sslhostconfig>                <certificate                        certificatekeystorefile="conf/你的域名.cn.jks"                        certificatekeystorepassword="你申请证书时提交密码"                        type="rsa" />            </sslhostconfig>        </connector>        <!-- define an ajp 1.3 connector on port 8009 -->        <connector protocol="ajp/1.3"                   address="::1"                   port="8009"                   redirectport="443" />        <!--name: ?于指定engine 的名称, 默认为catalina         defaulthost:默认使?的虚拟主机名称, 当客户端请求指向的主机?效时, 将交由默认的虚拟主机处              理, 默认为localhost-->        <engine name="catalina" defaulthost="localhost">            <realm classname="org.apache.catalina.realm.lockoutrealm">                <realm classname="org.apache.catalina.realm.userdatabaserealm"                       resourcename="userdatabase"/>            </realm>            <!--host 标签?于配置?个虚拟主机                      name:该host的名称                      appbase :指定 war包放置的路径,可以是绝对路径,也可以是相对路径(相对路径,相对的就是tomcat的安装目录                      unpackwars :是否自动解压 war包                      autodeploy:是否自动部署 (有点热部署的效果)-->            <host name="localhost" appbase="webapps"                  unpackwars="true" autodeploy="true">                <!-- 记录当前 host 处理请求的日志 -->                <valve classname="org.apache.catalina.valves.accesslogvalve" directory="logs"                       prefix="localhost_access_log" suffix=".txt"                       pattern="%h %l %u %t &quot;%r&quot; %s %b"/>            </host>        </engine>    </service></server>其中有一个需要注意的地方就是,证书的位置certificatekeystorefile可以填绝对路径,也可以填相对路径 。如果填写的是相对路径,那地址应该是conf的上一层目录(如果你把jks文件放在server.xml的同级目录下,此处应该填"conf/域名.jks"),我因为这个踩过一些坑 。
http 自动跳转 https 的安全配置(可选) 如果您需要将 http 请求自动重定向到 https 。您可以通过以下操作设置:
编辑 /usr/*/conf 目录下的 web.xml 文件,找到 标签 。
请在结束标签 后面换行,并添加以下内容:
    <login-config>    <!-- authorization setting for ssl -->    <auth-method>client-cert</auth-method>    <realm-name>client cert users-only area</realm-name>    </login-config>        <security-constraint>    <!-- authorization setting for ssl -->    <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>
如何检验配置是否成功 修改server.xml文件后,停止tomcat服务,在/usr/tomcat/*/bin目录下输入:
./shutdown.sh然后以下命令检查配置文件是否有误,如果有报错信息就在网上搜索一下或者自己解决就好了:
./configtest.sh以上步骤没有问题以后,输入以下命令就可以使用"https://域名.com"访问tomcat了 。
./startup.sh网上的教程大部分都只说./shutdown.sh和./startup.sh两个命令重启tomcat,但是有时候重启时有一些报错信息并不显示,就是访问80端口没有问题,但是443端口配置有错无法访问 。
还要注意的是,./configtest.sh命令一定要在./shutdown.sh停止tomcat之后执行,要不然会出现端口已被占用的错误 。
结语 最近在忙最近的毕业设计,最近做后端接口和最近写网页,然后在腾讯云上面买了一台服务器还有一个域名(总共花了80块钱,租了一年) 。花了半个月终于备案完成,于是迫不及待的把自己写的网页传上去 。其中配置docker、tomcat、mysql、rabbitmq、redis都遇到一些坑 。希望可以帮到大家吧 。
[1]: 腾讯云tomcat 服务器 ssl 证书安装部署(jks 格式)
到此这篇关于tomcat10配置端口号为443(使用https访问)的文章就介绍到这了,更多相关tomcat10配置端口号为443内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
-- 展开阅读全文 --

    推荐阅读