Tomcat 配置证书

配置https支持

生成证书

https协议需要证书, 为了开发去CA买证书是浪费, 使用jdk自带的keytool工具做一个开发测试用足够;

keytool -genkeypair -alias tomcat_k -keyalg RSA -validity 36500 -storepass abcd369258147.com -keystore ./rsa_key.keystore -v

其中:

  • -alias tomcat_k: 证书别名, 必填项
  • -keyalg RSA: 证书签名算法, tomcat建议RSA
  • -validity 36500: 证书有效期, 36500天, 即100年
  • -storepass 123456: 密钥库密码, 也就是等下要生成的rsa_key.keystore的访问密码, 妥善保管
  • -keystore ./rsa_key.keystore: 要生成的文件的位置, ./rsa_key.keystore表示存储在当前目录下
  • -v: 该选项会显示比较详细的信息

keytool 工具命令参考

填入必要的信息

  • 名字与姓氏:127.0.0.1(以后访问的域名或IP地址, 非常重要, 证书和域名或IP绑定)
  • 组织单位名称:anything(随便填)
  • 组织名称:anything(随便填)
  • 城市:anything(随便填)
  • 省市自治区:anything(随便填)
  • 国家地区代码:anything(随便填)

输入密码确认

导出证书(cer)

keytool -exportcert -alias tomcat_k -file ./tomcat_k.cer -storepass abcd369258147.com -keystore ./rsa_key.keystore

查看证书信息(cer)

keytool -list -v -alias tomcat_k -keystore "F:\test\rsa_key.keystore" -storepass abcd369258147.com keytool -list -v -keystore "F:\test\rsa_key.keystore" -storepass abcd369258147.com

完成后会在当前生成rsa_key.keystoretomcat_k.cer证书文件

配置tomcat

tomcat launch parameter -server -Xms512m -Xmx512m -XX:PermSize=256M -XX:MaxNewSize=512m JAVA_HOME

CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar PATH %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

  • 指定jdk 找到bin下的setclasspath.bat文件; 在文件的开始出添加如下代码: set JAVA_HOME=E:\iot_gis\jdk1.7\bin set JRE_HOME=E:\iot_gis\jdk1.7\jre

将刚才生成的密钥库(rsa_key.keystore)文件copy到你tomcat的conf目录, 跟server.xml同级; 注意: 这里一定要放在你实际运行的tomcat的conf目录下;

修改tomcat server.xml

-tomcat8以下

 <!--老版本tomcat的配置 tomcat8以下-->
    <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/conf/rsa_key.keystore"
               keystorePass="abcd369258147.com"/>

-tomcat9

<!--新版本tomcat的配置, 在tomcat9下测试成功-->
    <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443" />
    <Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/rsa_key.keystore" certificateKeystorePassword="abcd369258147.com" />
        </SSLHostConfig>
    </Connector>

Connector元素http协议改了公认的80 redirectPort="443" redirectPort TLS加密协议, 修改为公认的443端口.

测试 访问: https://127.0.0.1:443/examples/servlets/

修改默认ROOT

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
	...
	<Context  path="" docBase="D:\apache-tomcat-8.0.53\webapps\examples" debug="0" reloadable="false" /> 
</Host>

增加<Context path="" docBase="D:\apache-tomcat-8.0.53\webapps\examples" debug="0" reloadable="false" /> 节点, 其中docBase为需要设为默认项目的绝对路径(或者相对路径)

  • tomcat 直接指向位置 <Context docBase="F:\Work\project\e-jiankun-metadata-manager\src\main\webapp" path="/jiankun-metadata-manager" reloadable="false"/>

部署war应用

server.xml 在 Host 元素下 添加

<Context path="/geoserver" docBase="D:\software\apache-tomcat-9.0.87_geoserver\conf\server.xml" reloadable="false"/>
  • **path:**war包解压后的项目名称,也就是访问路径(例:http://localhost:8080/car/)
  • **docBase:**war包的路径(需要把war包的后缀名加上,如上图所示,避免报错)
  • **reloadable:**自动加载

自定义加载扩展lib

在tomcat目录\conf\catalina.properties文件修改。在其中加入文件夹对应的路径即可:如

{catalina.home}/lib/swagger/*.jar”