1、下载证书
申请域名并通过审核后就可以下载电子证书
点击选择我的证书
我这里选择免费证书
然后按照提示下载 tomcat 的相关证书
会有两个文件,一个是.pfx密钥文件文件,一个.txt密码文件
2、配置证书
1.上传文件到服务器
在你的服务器tomcat目录下建一个cert文件夹,如下
/usr/local/tomcat/apache-tomcat-9.0.34/cert
把.pfx和.txt文件放到里面(.txt密码可以不放)
2、编辑conf/server.xml文件
Tomcat 9强制要求证书别名设置为tomcat。您需要使用以下keytool命令将protocol="HTTP/1.1"转换成protocol=“org.apache.coyote.http11.Http11NioProtocol”
your.pfx是你证书.pfx的名字(注意.pfx文件的路径要根据自己的路径)
keytool -changealias -keystore your.pfx -alias alias -destalias tomcat
编辑conf/server.xml文件
如果你没有执行上面的命令,可以直接protocol=“org.apache.coyote.http11.Http11NioProtocol” 代替protocol=“HTTP/1.1”
<Connector port="443" #port属性根据实际情况修改(https默认端口为443)
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
secure="true"
keystoreFile="Tomcat安装目录/cert/your.pfx" #证书名称前需加上证书的绝对路径,请使用您证书的文件名替换your。
keystoreType="PKCS12"
keystorePass="证书密码" #请替换为密码文件pfx-password.txt中的内容。
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"/>
3、配置http自动跳转到https
在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>
同时,
将8080端口改为80,8443改为443
将8009处的8443改为443
这样https请求时就不用自动附带8443端口了。
4、最后重启tomcat服务器
在tomcat的bin目录下
执行以下命令关闭Tomcat服务器
./shutdown.sh
执行以下命令开启Tomcat服务器
./startup.sh
5、测试
回车
跳转到https。