Tomcat SSL配置完全指南:实现HTTP自动重定向HTTPS
安全套接字层(SSL)是一种加密协议,用于在互联网上提供通信安全。它基于私钥和公钥的概念,确保消息在发送到网络之前进行加密。在Tomcat上配置SSL时,我们需要使用Java keytool创建数字证书,这适用于开发环境。对于生产环境,您应该从SSL证书提供商处获取数字证书,例如Verisign、Entrust或Let’s Encrypt。
生成SSL证书
按照以下步骤来创建您自己的数字证书。
$ keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert
输入密钥库密码:
再次输入新密码:
您的姓名是什么?
[未知]: 张三
您的组织单位名称是什么?
[未知]: 开发部
您的组织名称是什么?
[未知]: 示例公司
您所在的城市或地区名称是什么?
[未知]: 北京
您所在的省/市/自治区名称是什么?
[未知]: 北京
该单位的双字母国家/地区代码是什么?
[未知]: CN
CN=张三, OU=开发部, O=示例公司, L=北京, ST=北京, C=CN 是否正确?
[否]: 是
输入 <tomcat> 的密钥密码
(如果与密钥库密码相同,按回车键):
再次输入新密码:
$ ls
mycertificate.cert
我在密钥库和密钥中使用了密码”changeit”,但您可以根据需要自行选择。现在我们的数字证书已准备就绪,下一步是在Tomcat中启用HTTPS通信端口,并配置它使用我们的数字证书来提供SSL支持。
在Tomcat中启用HTTPS安全协议
要启用SSL,请打开Tomcat安装目录下的conf/server.xml文件,并取消注释以下行:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/path/to/tomcat/conf/mycertificate.cert"
clientAuth="false" sslProtocol="TLS" />

将Tomcat的HTTP请求重定向到HTTPS
目前,我们可以通过HTTP和HTTPS端口访问任何Web应用程序。接下来,我们将通过一些配置来设置Tomcat,使所有HTTP请求自动重定向到HTTPS端口。
在Tomcat安装目录下的conf/server.xml文件中,找到HTTP连接器(Connector),将其重定向端口(redirectPort)设置为HTTPS连接器的端口(8443)。配置应类似于以下内容:
<!-- 定义一个非SSL的HTTP/1.1连接器,端口为8080 -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
在Tomcat安装目录下的conf/web.xml文件中,添加以下配置,但请确保将其添加在所有servlet-mapping标签之后:
<!-- 添加以下配置以实现HTTP到HTTPS的自动重定向 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>整个应用程序</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
现在重启Tomcat,所有的HTTP请求将自动重定向到HTTPS,例如http://localhost:8080/axis2将自动重定向到https://localhost:8443/axis2。
注意:如果您不想在URL中显示端口号,可以使用80作为HTTP的端口,443作为HTTPS的端口(这些是默认端口)。在这种情况下,您可以跳过设置HTTP连接器重定向端口的步骤,因为系统会自动使用默认的443端口。
更新:如果您正在使用Tomcat,您可能对以下教程感兴趣:
- Java Web应用程序教程
- Java Servlet教程