在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤

时间:2020-02-23 14:33:13  来源:igfitidea点击:

安全套接字层(SSL)是用于通过Internet提供消息安全性的加密协议。
它适用于私钥和公钥的概念,并且消息在通过网络发送之前已加密。

要在Tomcat上配置SSL,我们需要一个数字证书,可以使用Java keytool为开发环境创建一个数字证书。
对于生产环境,您应该从SSL证书提供者那里获得数字证书,例如Verisign,Entrust和Let's Encrypt。

创建SSL证书

请按照以下步骤创建自己的数字证书。

$keytool -genkey -alias tomcat -keyalg RSA -keystore mycertificate.cert
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]:  hyman Kumar
What is the name of your organizational unit?
[Unknown]:  Dev
What is the name of your organization?
[Unknown]:  theitroad
What is the name of your City or Locality?
[Unknown]:  Bangalore
What is the name of your State or Province?
[Unknown]:  Karnataka
What is the two-letter country code for this unit?
[Unknown]:  IN
Is CN=hyman Kumar, OU=Dev, O=theitroad, L=Bangalore, ST=Karnataka, C=IN correct?
[no]:  Yes

Enter key password for <tomcat>
	(RETURN if same as keystore password):
Re-enter new password:
$ls
mycertificate.cert

我已经为密钥库和密钥使用了密码" changeit",但是您可以使用任何您想使用的东西。

现在我们的数字证书已经准备就绪,下一步是在Tomcat中启用HTTPS通信端口,并将其设置为使用我们的数字证书提供SSL支持。

Tomcat HTTPS

要启用SSL,请打开~Tomcat_Installation/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="/Users/hyman/tomcat/conf/mycertificate.cert"
	       clientAuth="false" sslProtocol="TLS" 

为了避免证书放错地方,我将其放在了tomcat conf目录中。
现在,重新启动Tomcat,并尝试通过https使用端口8443访问任何Web应用程序。

Tomcat重定向HTTP到HTTPS

因此,我们可以在HTTP和HTTPS端口上访问任何Web应用程序。
我们可以设置tomcat以通过一些配置将所有HTTP请求重定向到HTTPS端口。

  • 在~TomcatInstallation/conf/server.xml中,对于HTTP连接器,将重定向端口设置为HTTPS连接器端口。
    看起来会像这样:

立即重新启动tomcat,所有HTTP请求将自动重定向到HTTPS,即https://localhost:8080/axis2将自动重定向到https://localhost:8443/axis2

注意:如果您不想在网址中提供端口,请对HTTP使用80,对HTTPS使用443。
在这种情况下,您可以跳过第一步以将HTTP请求自动重定向到HTTPS,因为它将自动选择默认端口443。