文档中心
Linux涓婲ginx閰嶇疆HTTPS璇佷功鍏ㄦ敾鐣モ€斺€斾粠鐢宠鍒颁紭鍖栫殑瀹炴垬鎸囧崡
时间 : 2025-09-27 16:23:42浏览量 : 3

在当今互联网环境中,HTTPS早已成为网站安全的标配。作为Linux系统中最流行的Web服务器之一,Nginx搭配HTTPS证书不仅能保障数据传输安全,还能提升搜索引擎排名。本文将以小白也能听懂的方式,手把手教你如何在Linux系统中为Nginx配置HTTPS证书,并穿插实际案例和避坑指南。
一、为什么需要HTTPS?先看两个血泪教训
1. 案例1:钓鱼攻击
某电商网站未启用HTTPS,黑客在公共WiFi中劫持用户访问的页面,将“支付按钮”替换成恶意链接,导致用户资金被盗。
2. 案例2:SEO降权
谷歌明确将HTTPS作为搜索排名因素,某博客站长因长期使用HTTP,流量被竞品反超。
HTTPS的核心作用:通过SSL/TLS加密传输数据(比如密码、银行卡号),同时验证网站身份(防止“山寨网站”)。
二、准备工作:证书类型与选择
在配置前,你需要一个SSL证书。常见的有三种:
1. 免费证书(Let's Encrypt)
- 适合个人博客、测试环境
- 有效期90天,需定期续签
- 示例命令申请:
```bash
sudo certbot --nginx -d example.com
```
2. 付费证书(DigiCert/Symantec)
- 适合企业官网、金融类站点
- 提供更高额度的保险和人工支持
3. 自签名证书
- 仅用于内网测试(浏览器会警告“不安全”)
三、Nginx配置HTTPS全流程(附代码)
步骤1:安装Nginx和OpenSSL
```bash
Ubuntu/Debian
sudo apt update && sudo apt install nginx openssl
CentOS/RHEL
sudo yum install nginx openssl
```
步骤2:上传证书文件
假设你已购买证书,通常会拿到:
- `example.com.crt`(公钥)
- `example.com.key`(私钥)
- (可选)CA中间证书链
将它们上传到服务器目录,例如:
/etc/nginx/ssl/example.com.crt
/etc/nginx/ssl/example.com.key
步骤3:修改Nginx配置文件
编辑站点配置文件(通常位于`/etc/nginx/sites-available/your_site`),添加以下内容:
```nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
强制启用TLS 1.2+(禁用不安全的旧协议)
ssl_protocols TLSv1.2 TLSv1.3;
HTTP自动跳转到HTTPS(避免用户误访问)
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
步骤4:重启Nginx并测试
sudo nginx -t
检查语法是否正确
sudo systemctl restart nginx
用浏览器访问https://example.com ,确认锁图标出现?
四、高级优化技巧
1. OCSP Stapling加速验证
浏览器通常需要联系CA验证证书状态,这会拖慢速度。OCSP Stapling让Nginx代为验证:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;
Google DNS
2. HSTS防止降级攻击
强制浏览器始终使用HTTPS(即使手动输入HTTP):
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
3. 性能调优
启用会话复用减少握手开销:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
五、常见问题排查
- 错误1:“NET::ERR_CERT_AUTHORITY_INVALID”
原因:中间证书链缺失。解决方案:合并CA证书到`.crt`文件:
```bash
cat example.com.crt intermediate.crt > combined.crt
```
- 错误2:Nginx启动失败
检查私钥是否匹配公钥:
openssl x509 -noout -modulus -in example.com.crt | openssl md5
openssl rsa -noout -modulus -in example.com.key | openssl md5
两个MD5值必须一致!
六、
通过本文的步骤,你已成功为Nginx穿上HTTPS的“防弹衣”。记住安全是一个持续的过程——定期更新证书、监控漏洞公告(如OpenSSL的CVE)、使用工具[SSL Labs](https://www.ssllabs.com/)测试配置强度。如果你遇到问题,欢迎在评论区留言讨论!
TAG:linux nginx https 证书,nginx ca证书,nginx证书链,nginxssl证书配置,nginx 证书生成