Tomcat 8.5.100 配置多证书多域名

Tomcat多证书多域名必须是Tomcat 8.5以上版本

配置server.xml

XML 复制代码
<?xml version='1.0' encoding='utf-8'?>

<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />


  <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 name="Catalina">


    <Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" 
               connectionTimeout="8000"
               redirectPort="443" 
			   maxPostSize="-1" maxHttpHeaderSize ="102400"  /> 
	 
	<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol" 
           port="443"  SSLEnabled="true" defaultSSLHostConfigName="domain1.cn"
		   connectionTimeout="8000">
           <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
		   <SSLHostConfig hostName="domain1.cn"  ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
			TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256">
			  <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.100/cert/jks/domain1.cn.jks" 
						   certificateKeystorePassword="password1" type="RSA"/>
		  </SSLHostConfig>
 
            <SSLHostConfig hostName="domain2.cn"  ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
			TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256">
                <Certificate certificateKeystoreFile="D:/apache-tomcat-8.5.100/cert/jks/domain2.cn.jks"
                             certificateKeystorePassword="password2"
                             type="RSA"/>
            </SSLHostConfig>
	 </Connector>

    <Connector port="8009" protocol="AJP/1.3" redirectPort="9443"  secretRequired=""/>



    <Engine name="Catalina" defaultHost="domain1.cn">

      
      <Realm className="org.apache.catalina.realm.LockOutRealm">

        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="domain1.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		 <Alias>domain1.cn</Alias>
		<Alias>domain2.cn</Alias>
				<Context path="" docBase="d:/www/project1" reloadable="true" crossContext="true" ></Context> 
      </Host>
		

    </Engine>
  </Service>
</Server>

关键点说明:

1.defaultSSLHostConfigName 属性是必须,不设置默认配置会报错.

XML 复制代码
	<Connector
       protocol="org.apache.coyote.http11.Http11NioProtocol" 
           port="443"  SSLEnabled="true" defaultSSLHostConfigName="domain1.cn"
		   connectionTimeout="8000">

2.表示开启多域名支持

XML 复制代码
     <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

3.Alias是多域名别名配置,这是同一个项目多个域名的配置。

XML 复制代码
<Host name="domain1.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		 <Alias>domain1.cn</Alias>
		<Alias>domain2.cn</Alias>
				<Context path="" docBase="d:/www/project1" reloadable="true" crossContext="true" ></Context> 
      </Host>

如果是多个项目多个域名配置多个<Host>节点即可。

XML 复制代码
<Host name="domain1.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
				<Context path="" docBase="d:/www/project1" reloadable="true" crossContext="true" ></Context> 
      </Host>
<Host name="domain2.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
				<Context path="" docBase="d:/www/project2" reloadable="true" crossContext="true" ></Context> 
      </Host>

参数的属性可官方文档:

Apache Tomcat 8 Configuration Reference (8.5.100) - The HTTP Connector

相关推荐
ok!ko3 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2402_857589364 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰4 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没5 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥5 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程6 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇6 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码7 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈7 小时前
C++——模板进阶、继承
java·服务器·c++
A尘埃7 小时前
SpringBoot的数据访问
java·spring boot·后端