文档中心
NginxHTTPS璇佷功鐢熸垚鍏ㄦ敾鐣ヤ粠鐢宠鍒伴厤缃竴姝ュ埌浣?txt
时间 : 2025-09-27 16:25:59浏览量 : 2

在今天的互联网环境中,HTTPS已经成为网站安全的标配。作为最流行的Web服务器之一,Nginx配置HTTPS证书是每个运维人员的必修课。本文将用最通俗的语言,手把手教你如何为Nginx生成和配置HTTPS证书,涵盖Let's Encrypt免费证书和商业证书两种方案。
一、HTTPS证书的三种类型
在开始之前,我们需要了解三种常见的SSL/TLS证书:
1. 域名验证型(DV):只验证域名所有权,10分钟快速签发,适合个人博客和小网站(如Let's Encrypt)
2. 企业验证型(OV):需要验证企业真实性,1-3天签发,适合企业官网(如DigiCert)
3. 扩展验证型(EV):最高级别验证,浏览器地址栏会显示公司名称(如银行网站)
> 真实案例:某电商网站使用DV证书时被钓鱼网站仿冒,升级OV证书后仿冒成本大幅提高。
二、免费方案:Let's Encrypt自动生成
对于个人开发者和小型企业,Let's Encrypt是最佳选择。它提供90天有效期的免费DV证书,可以通过Certbot工具自动续期。
1. 安装Certbot客户端
```bash
Ubuntu/Debian系统
sudo apt update
sudo apt install certbot python3-certbot-nginx
CentOS系统
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
```
2. 一键获取证书
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
这个命令会自动:
- 验证域名所有权(创建临时文件供CA访问验证)
- 生成RSA 2048位密钥对
- 下载证书到`/etc/letsencrypt/live/yourdomain.com/`目录
3. Nginx自动配置示例
Certbot会自动修改你的Nginx配置,典型的配置片段如下:
```nginx
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
TLS协议优化配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
}
> 安全提示:老旧的TLSv1.0/v1.1已被主流浏览器禁用,必须使用TLSv1.2以上版本。
三、商业证书手动安装流程
如果需要OV/EV证书(比如金融、电商网站),需要从商业CA购买后手动安装:
1. 生成CSR请求文件
openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr
执行后会交互式询问:
Country Name (2 letter code) []: CN
State or Province Name []: Beijing
Locality Name []: Beijing
Organization Name []: Your Company Ltd.
Common Name []: yourdomain.com
必须与网站域名完全一致
2. CA签发后的文件包通常包含:
- `your_domain.crt`(主证书)
- `CA_Bundle.crt`(中间证书链)
- (可能有)`Trusted_Root.crt`(根证书)
3. Nginx完整配置示例
ssl_certificate /path/to/your_domain.crt;
ssl_certificate_key /path/to/server.key;
合并中间证书和主证书(按顺序)
cat your_domain.crt CA_Bundle.crt > combined.crt
ssl_trusted_certificate /path/to/combined.crt;
HSTS安全头(强制HTTPS)
add_header Strict-Transport-Security "max-age=63072000" always;
四、常见问题排查指南
问题1:"SSL_ERROR_BAD_CERT_DOMAIN"错误
原因:证书域名与实际访问域名不匹配
解决:检查CSR中的Common Name和SAN(Subject Alternative Name)是否包含所有子域名
问题2:"NET::ERR_CERT_DATE_INVALID"错误
原因:服务器时间不同步导致证书过期误判
解决:运行`ntpdate pool.ntp.org`同步时间
问题3:浏览器显示"连接不安全"但证书有效
原因:页面混合加载HTTP资源(如图片、JS)
解决:使用Content-Security-Policy头或全局替换资源URL为https://
五、高级安全加固建议
1. 密钥轮换:每6个月更换一次私钥(即使证书未到期)
2. OCSP装订:减少客户端验证延迟
```nginx
ssl_stapling on;
ssl_stapling_verify on;
```
3. TLS会话复用:提升性能同时保持安全
```nginx
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
通过以上步骤,你的Nginx服务器将获得A+级的SSL Labs评分。记住定期检查certbot renew --dry-run确保自动续期正常运作。对于高安全性要求的场景,建议考虑部署双证书记录技术(同时使用RSA和ECC密钥)。
TAG:nginx https证书生成,nginx ca证书,nginx ssl证书生成,nginx证书链,nginx配置cer证书