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: 该选项会显示比较详细的信息
填入必要的信息
- 名字与姓氏: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.keystore和tomcat_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协议改了公认的80redirectPort="443"redirectPortTLS加密协议, 修改为公认的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”