在 Debian 上给 Tomcat 配置 SSL(HTTPS) 通常有两种常见方式:
下面先讲 Tomcat 原生配置 SSL(最常用)。
如果你已经有:
fullchain.pemprivkey.pem先转成 Tomcat 需要的 PKCS12:
openssl pkcs12 -export \
-in fullchain.pem \
-inkey privkey.pem \
-out /etc/tomcat9/ssl/tomcat.p12 \
-name tomcat
设置导出密码(记住它)。
keytool -genkeypair \
-alias tomcat \
-keyalg RSA \
-keysize 2048 \
-validity 365 \
-keystore /etc/tomcat9/ssl/keystore.jks
Tomcat 在 Debian 通常路径:
/etc/tomcat9//etc/tomcat9/server.xml编辑:
sudo nano /etc/tomcat9/server.xml
<!--
<Connector port="8080" protocol="HTTP/1.1" ... />
-->
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="/etc/tomcat9/ssl/tomcat.p12"
certificateKeystoreType="PKCS12"
certificateKeystorePassword="你的密码"
type="RSA" />
</SSLHostConfig>
</Connector>
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="/etc/tomcat9/ssl/keystore.jks"
certificateKeystorePassword="你的密码"
type="RSA" />
</SSLHostConfig>
</Connector>
sudo chown -R tomcat:tomcat /etc/tomcat9/ssl
sudo chmod 600 /etc/tomcat9/ssl/*
sudo systemctl restart tomcat9
访问:
https://服务器IP:8443
编辑:
sudo nano /etc/tomcat9/web.xml
在 </web-app> 前加:
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPS</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
✅ Nginx + Tomcat
示例 Nginx:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
❌ java.io.IOException: Keystore was tampered
→ 密码错误或路径权限不对
❌ 浏览器不安全 → 自签证书需手动信任
❌ Debian 没 tomcat9
sudo apt install tomcat9
如果你愿意,可以告诉我:
我可以给你 完全贴合你环境的配置。