在Ubuntu上配置Tomcat以使用SSL涉及几个步骤。以下是一个基本的指南,帮助你在Ubuntu系统上为Tomcat配置SSL:
如果你还没有安装Tomcat,可以使用以下命令进行安装:
sudo apt update
sudo apt install tomcat9
你可以使用OpenSSL生成自签名证书,或者从CA(证书颁发机构)获取证书。这里我们使用OpenSSL生成自签名证书。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/tomcat-selfsigned.key -out /etc/ssl/certs/tomcat-selfsigned.crt
在生成证书的过程中,你需要提供一些信息,如国家、州、组织名称等。
编辑Tomcat的配置文件/etc/tomcat9/server.xml
,找到以下注释掉的SSL连接器配置:
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
取消注释并修改为以下内容:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/etc/ssl/private/tomcat-selfsigned.key"
certificateKeystorePassword="your_keystore_password"
type="RSA" />
</SSLHostConfig>
</Connector>
注意:
certificateKeystoreFile
应该指向你生成的密钥文件。certificateKeystorePassword
是你在生成密钥时设置的密码。为了确保所有流量都通过HTTPS,你可以配置Tomcat将HTTP请求重定向到HTTPS。编辑/etc/tomcat9/web.xml
文件,找到以下注释掉的HTTP连接器配置:
<!--
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
取消注释并修改为以下内容:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
然后,添加一个新的连接器来处理重定向:
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
最后,在<Host>
元素内添加一个<Valve>
元素来处理重定向:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
protocolHeader="x-forwarded-proto" />
<Valve className="org.apache.catalina.valves.HttpRedirectValve"
scheme="https" secure="true" port="8443" />
</Host>
保存所有更改后,重启Tomcat以应用新的配置:
sudo systemctl restart tomcat9
打开浏览器并访问https://your_server_ip:8443
,你应该能够看到Tomcat的默认页面,并且浏览器会显示一个安全警告,因为这是一个自签名证书。
通过以上步骤,你已经成功在Ubuntu上为Tomcat配置了SSL。如果你使用的是CA颁发的证书,你需要将证书文件和密钥文件路径替换为实际的文件路径,并确保密码正确。