官网参考
阿里云
华为云
获取证书
自己生成证书
这边介绍一个生产开发环境证书的方式:使用 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 passwords
via a brute-force attack -->
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available 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 applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- 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" />
</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" />