Tomcat多域名多证书多项目配置
因为项目的需求,需要在一个服务器上的一个tomcat中配置多个域名,每个域名有多个证书并且对应多个项目(我这里是spring的项目,不过都差不多吧)
在网上查到很多资料,但是很绝望,在我这都不是很适用,最后自己兜兜转转解决了在这记录一下。
在使用别人的方法时遇到的问题:
1. tomcat启动闪退
2. tomcat启动后,网站无法访问,链接超时(此时域名可以ping通)
文章主要就是server.xml的配置了,下面是代码
代码
80端口那边的设置我就不放在这了,毕竟遇到这个问题的应该都知道了,以下是Connector 443的配置
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true">
<SSLHostConfig hostName="域名1">
<Certificate certificateKeystoreFile="域名1的jks文件路径" certificateKeyAlias="该SSL证书的别称,或者直接写域名"
certificateKeystorePassword="证书密码"
type="RSA" />
</SSLHostConfig>
<!--以下是我解决这次问题的关键,因为我只需要两个域名,所以指定了其中一个后,别的都可以默认为另一个
具体的原因很抱歉我也不是不清楚,但最终就是在这个地方,添加了一个默认入口,项目就可以跑了
如果你有三个或者四个哪怕更多,只需要复制上面的那一段SSLHostConfig就行,但最后记得加上一个默认值
下面这部分没写hostname,但默认的是localhost,我尝试加上hostName = localhost但失败了= =-->
<SSLHostConfig>
<Certificate certificateKeystoreFile="域名2的jks路径" certificateKeyAlias="域名2"
certificateKeystorePassword="密码"
type="RSA" />
</SSLHostConfig>
</Connector>
以下是Host的设置
</Host>
<Host name="域名1" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<Context path="" docBase="域名1的工程路径" debug="0"/>
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
其实这部分就是把loaclhost的复制一遍,然后修改一下name和docBase,当然可能你的localhost并没有设置Context,那就照我的加上就好了,记住这是加上的,原本的localhost别删了,留着,在我的项目里他的Context就是另一个项目的路径,你的就自己看着办咯。然后保存,重启tomcat,大功告成!!!
总之要点就在于我在443那里留了一个默认的入口让他对应到localhost,具体原因我还不清楚,但问题暂时是解决了,别的再多多去了解吧