官网参考
阿里云
华为云
获取证书
自己生成证书
这边介绍一个生产开发环境证书的方式:使用 Java 提供的工具:keytool
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "d:\tomcat.keystore"
Tomcat服务器支持安装PFX格式和JKS两种格式的证书,这里选择安装PFX格式证书。
从阿里/华为获取证书
解压已保存到本地的Tomcat证书文件。
解压后您将看到文件夹中有以下文件:
证书文件(domain_name.pfx)
密码文件(pfx-password.txt)
PFX格式的证书
拷贝证书文件
在Tomcat安装目录的conf
目录下,创建 cert
目录,将解压的证书和密码文件拷贝到cert目录下
修改tomcat配置
修改配置文件server.xml(路径:Tomcat安装目录/conf/server.xml)
修改原本的80端口
原来的
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
修改后的
<Connector port="80"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="443"maxPostSize="-1" />
网址访问的默认端口号是 80
端口,访问时就不需要加8080端口了
HTTPS 的默认端口是 443
端口
redirectPort 是转发端口,修改成 443
后能够实现输入网址后自动启用HTTPS,来自80端口的请求都跳转至443端口
方法一
设置https
在注释的下方增加下面代码
<Connector port="443"protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="1000"acceptCount="1000"SSLEnabled="true"scheme="https"secure="true"clientAuth="false"sslProtocol="TLS" keystoreFile="conf/cert/domain_name.pfx"keystoreType="PKCS12"keystorePass="pfx-password.txt中的密码"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" />
方法二
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"><SSLHostConfig><Certificate certificateKeystoreFile="C:/apache-tomcat-8.5.60/cert/【证书文件(.pfx结尾)】"certificateKeystorePassword="证书文件中的密码"certificateKeystoreType="PKCS12"/></SSLHostConfig></Connector>
使用JKS证书
拷贝证书文件
在Tomcat安装目录的conf
目录下,创建 cert
目录,将解压的证书和密码文件拷贝到cert目录下
修改tomcat配置
打开server.xml,添加ssl连接器,在8080端口连接器下面添加如下配置:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"keystoreFile="conf/cert//YourDomain.jks"keystorePass="SSLPass"clientAuth="false" sslProtocol="TLS" />注意:keystoreFile :证书存放目录,可以写绝对路径或Tomcat相对路径;keystorePass:证书私钥密码;
修改HOST配置
<Engine name="Catalina" defaultHost="localhost"> ## 这里指定的localhost是默认HOST的名称,修改为证书绑定的域名即可<!--For clustering, please take a look at documentation at:/docs/cluster-howto.html (simple how to)/docs/config/cluster.html (reference documentation) --><!--<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>--><!-- Use the LockOutRealm to prevent attempts to guess user passwordsvia a brute-force attack --><Realm className="org.apache.catalina.realm.LockOutRealm"><!-- This Realm uses the UserDatabase configured in the global JNDIresources under the key "UserDatabase". Any editsthat are performed against this UserDatabase are immediatelyavailable for use by the Realm. --><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps" ### 将这里的localhost修改Wie刚才添加解析的域名即可,且必须与证书的通用名称保持一致unpackWARs="true" autoDeploy="true"><!-- SingleSignOn valve, share authentication between web applicationsDocumentation at: /docs/config/valve.html --><!--<Valve className="org.apache.catalina.authenticator.SingleSignOn" />--><!-- Access log processes all example.Documentation at: /docs/config/valve.htmlNote: 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" /></Host>
这里只需要将里两个localhost修改为证书绑定域名即可,也就是是将该域名与此HOST绑定;
开启HTTP强制跳转HTTPS
配置Tomcat安装目录/conf/web.xml文件
找到<welcome-file-list>
在同级下增加下面代码
<login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Client Cert Users-only Area</realm-name> </login-config> <security-constraint> <!-- Authorization setting for SSL --> <web-resource-collection > <web-resource-name>SSL</web-resource-name> #请将该参数替换为您的项目名称。<url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
其他设置
启用多个服务
你有一个服务,希望通过 域名/music
的方式访问
实现过程
- 在
webapps
目录下新建music
目录,将服务文件放进去 - 配置
server.xml
配置内容:
定位到文件末尾,找到如下内容:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" />
在该文件下,新增配置:
<Content path="/music/" docBase="C:\\apache-tomcat-8.5.60\\webapps\\music" reloadable="true" />
参数描述:
- path: 通过对应网址访问该服务。 (例:https:xxx.com/music)
- docBase: 提供对应服务的文件所在的绝对路径。
- reloadable: 自动重载该服务。 (启用后,更改该文件不需要重启Tomcat)
tomcat配置支持ipv6
注意:tomcat6 不支持监听ipv6
想让你的tomcat即可以使用IPV4又可以使用IPV6访问,需要进行如下配置,修改tomcat配置文件\conf\server.xml
只需加上 address="[::]"
即可
<Connector port="8080" protocol="HTTP/1.1"...redirectPort="8443" />修改后的<Connector port="8080" protocol="HTTP/1.1"address="[::]"...redirectPort="8443" />