文档中心
Nginx+Tomcat濡備綍閰嶇疆SSL璇佷功锛熶竴姝ユ鏁欎綘瀹炵幇HTTPS鍔犲瘑
时间 : 2025-09-27 16:25:54浏览量 : 3

作为一名网络安全从业者,我经常被问到如何为网站配置SSL证书。今天我就用最通俗易懂的方式,手把手教你如何在Nginx+Tomcat环境中配置SSL证书,让你的网站从HTTP升级到更安全的HTTPS。
为什么需要SSL证书?
想象一下你寄明信片和寄挂号信的区别:明信片谁都能看到内容(HTTP),而挂号信是密封的只有收件人能打开(HTTPS)。SSL证书就是帮你把"明信片"变成"挂号信"的技术。
真实案例:2025年某电商平台因未启用HTTPS,导致用户支付信息在传输过程中被黑客截获,造成数百万损失。这就是典型的"中间人攻击",而SSL证书可以有效防范此类风险。
SSL证书工作原理简析
当你访问一个HTTPS网站时:
1. 浏览器说:"嗨,请证明你是真的你"
2. 服务器出示SSL证书:"这是我的身份证"
3. 浏览器检查这个"身份证"是否由可信机构颁发
4. 确认无误后,双方建立一个加密通道
这就像你去银行办业务,柜员要先看你的身份证一样。
准备工作
在开始前你需要:
1. 已备案的域名(比如example.com)
2. 服务器(建议至少2核4G配置)
3. SSL证书(可以从阿里云、腾讯云等平台申请免费证书)
我推荐使用Let's Encrypt的免费证书,它就像互联网世界的"公益身份证发放机构"。
Nginx配置SSL证书步骤
假设你已经安装好Nginx,下面是具体操作:
1. 上传证书文件
通常你会得到两个文件:
- example.com.pem(公钥)
- example.com.key(私钥)
把它们上传到服务器,比如:/etc/nginx/ssl/
```bash
mkdir -p /etc/nginx/ssl
chmod 700 /etc/nginx/ssl
```
2. 修改Nginx配置文件
编辑/etc/nginx/conf.d/default.conf:
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
转发到Tomcat
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
listen 80;
return 301 https://$server_name$request_uri;
HTTP强制跳转HTTPS
3. 测试并重启Nginx
nginx -t
测试配置是否正确
systemctl restart nginx
重启服务
Tomcat额外配置
虽然Nginx已经处理了SSL,但为了更安全建议也配置Tomcat:
修改Tomcat的server.xml:
```xml
proxyPort="443"
scheme="https"
secure="true"/>
```
这样应用获取到的请求都会被认为是HTTPS请求。
常见问题解决
问题1:混合内容警告
现象:虽然地址栏显示??图标,但浏览器仍提示不安全。
原因:网页中引用了HTTP资源(如图片、JS文件)。
解决方法:将所有资源链接改为HTTPS或相对路径。
问题2:重定向循环
现象:页面不断刷新无法打开。
可能原因:Nginx和Tomcat都做了HTTP跳转HTTPS的配置。
解决方法:只保留Nginx的跳转配置。
问题3:性能下降
解决方案:
- 开启OCSP Stapling减少验证时间
- 使用Session Ticket减少握手开销
- Nginx添加如下优化参数:
```nginx
ssl_session_cache shared:SSL:10m;
ssl_session_tickets on;
HTTPS安全加固建议
1. 禁用老旧协议
像TLSv1.0、TLSv1.1这些老协议已经不安全了:
ssl_protocols TLSv1.2 TLSv1.3;
2. 使用强加密套件
ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256';
3. 开启HSTS
告诉浏览器以后都只用HTTPS访问:
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
SSL证书维护小贴士
1. 设置到期提醒
免费证书通常90天过期,建议设置日历提醒提前续期。
2.定期检查配置
使用[SSL Labs测试工具](https://www.ssllabs.com/)检测你的配置得分。
3.备份密钥文件
私钥一旦丢失就无法恢复,一定要安全备份。
通过以上步骤,你的网站就从"裸奔"状态升级到了"武装防护"。记住在网络安全领域,"预防胜于治疗"。一个简单的SSL证书配置可能就避免了一次数据泄露事故。如果遇到任何问题欢迎留言讨论!
> 职场经验分享
> *在我处理过的一次企业数据泄露事件中,攻击者正是利用了未加密的管理员cookie进行会话劫持。如果当时启用了HTTPS并正确设置了Secure和HttpOnly属性,这次事件完全可以避免。安全无小事!*
TAG:nginx tomcat 配置ssl证书,nginx配置ssl证书无效,nginx ssl pem,nginx tomcat apache,nginx tomcat keepalive,nginx+tomcat