因项目需求,需要用windows版的宝塔搭建Java环境,可惜小白一枚,各种百度。
1. 宝塔上tomcat只有3个版本,分别是tomcat7,8,9。
原本想用maven打个war包运行一下再配置,奈何搞不定,直接copy一份代码直接上手。
先用tomcat9测试,百度了一下,网上说大概如下配置,
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
keystoreFile="/usr/ca/server/server.keystore.jks"
keystorePass="yzd2019"
clientAuth="false"
sslProtocol="TLS" />
这里的keystoreFile是密钥的绝对路径地址,分两种,一种的pfx文件,一种是jks文件,用哪个都行。keystorePass就是密钥对应的密码。
然后重启tomcat,随便说一下,在宝塔重启tomcat,看着启动状态变了,其实要等2分钟页面才起作用。
后面心情激动的等啊等用https一直没反应,又各种百度,才知道是tomcat版本不同,写法不一样,真是坑死人了。我用的是tomcat9,又换了如下写法。
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443"/>
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="D:/BtSoft/cert/test.pfx"
certificateKeystorePassword="123456"
certificateKeystoreType="PKCS12"/>
</SSLHostConfig>
</Connector>
然后重启发现https访问可以了,但是https://域名:8080不起作用,我明明做了端口转发了啊。
于是我把 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="443"/>这行去掉了,反正客户不要求做转发,只要加8080访问,发现这样宝塔上tomcat又报错,启动不起来,真坑。
最后没办法,把这行改成 <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>,下面<Connector 的port改成 8080,这样可以用 https://域名:8080访问了。不知是 宝塔的问题还是我没有配置对,请大神们指教,反正现在是可以用了,记录一下,给后人指出一点坑。
(ps:要想配置http自动转成https,需要在web.xml文件再加上一段配置,这个简单,自行百度。)