这里我们使用是阿里云的云服务器ECS,使用的是阿里云的SSL证书来给服务器配置https。
https的默认端口是443。而我们也常常看见8443端口。其实二者的区别在于8443端口在访问时需要加端口号,相当于http的8080,不可通过域名直接访问。而443端口在访问时不需要加端口号,相当于http的80,可通过域名直接访问。
默认端口为443不代表着其他端口不能配置https。 有时候我们不仅需要为前端tomcat服务器配置https,而且需要为后端服务器配置https。因为使用了https域名的前端页面,页面内将不能发送http请求。所以我们需要为后端端口配置https。
下面我们就介绍如何为tomcat配置https:
①为tomcat配置https。
②为springboot的内置tomcat配置https。(详情链接)
1.1 在阿里云控制台中,搜索 ssl 证书。可以申请免费型DV SSL证书,在证书申请时填入需要配置https的域名。
1.2 下载SSL证书(tomcat型),下载的压缩包里包含一个pfx文件(不要打开和修改) 和一个txt文件。pfx文件为证书文件,txt文件中内容为证书密钥。
1.3 在tomcat的安装路径下新建一个cert文件(与bin、webapps文件夹同级)。
将pfx文件放入其中。
1.4 修改tomcat的server.xml文件,新添端口443作为https端口。而我们一般使用80作为http端口。
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="/usr/tomcat/apache-tomcat-8.5.40/cert/2119113_www.****.pfx"
keystoreType="PKCS12"
keystorePass="*****"
clientAuth="false"
SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
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"/>
- keystoreFile :为证书文件根路径 (没亲测过相对于tomcat的根路径)
- keystorePass :证书密钥
因为使用了443作为https端口,所以将server.xml中所有8433端口更改为443端口。比如:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="443" />
1.5 在tomcat的web.xml中填写如下代码:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<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>
1.6重启 tomcat,即可。还有很重要的一点是,设置https的端口不能被其他进程占用,且该端口对外开放(防火墙)