在 Debian 上配置 Tomcat SSL(HTTPS),通常分为以下几个步骤。下面以 Tomcat 9(或 8.5) + Debian 11/12 为例说明,其他版本差别不大。
sudo apt update
sudo apt install tomcat9
默认安装路径:
/etc/tomcat9//var/lib/tomcat9/webapps/sudo keytool -genkeypair \
-alias tomcat \
-keyalg RSA \
-keysize 2048 \
-validity 365 \
-keystore /etc/tomcat9/keystore.jks
按提示输入:
sudo apt install certbot
sudo certbot certonly --standalone -d yourdomain.com
生成的证书路径:
/etc/letsencrypt/live/yourdomain.com/
编辑 Tomcat 的 server.xml:
sudo nano /etc/tomcat9/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/etc/tomcat9/keystore.jks"
certificateKeystorePassword="你的密码"
type="RSA" />
</SSLHostConfig>
</Connector>
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig>
<Certificate certificateFile="/etc/letsencrypt/live/yourdomain.com/fullchain.pem"
certificateKeyFile="/etc/letsencrypt/live/yourdomain.com/privkey.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
web.xml编辑:
sudo nano /etc/tomcat9/web.xml
在 <web-app> 标签内添加:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
如想直接使用 443:
<Connector port="443" ... />
并授权 Tomcat 绑定低端口:
sudo apt install authbind
sudo touch /etc/authbind/byport/443
sudo chmod 500 /etc/authbind/byport/443
sudo chown tomcat /etc/authbind/byport/443
修改启动参数:
sudo nano /etc/default/tomcat9
AUTHBIND=yes
sudo systemctl restart tomcat9
检查状态:
sudo systemctl status tomcat9
浏览器访问:
https://服务器IP:8443
https://yourdomain.com
sudo ufw allow 8443
sudo ufw allow 443
sudo chown -R tomcat:tomcat /etc/letsencrypt/live
sudo chmod -R 600 /etc/letsencrypt/live
如果你愿意,我可以:
直接告诉我你用的是什么 Tomcat 版本和证书类型即可。