nginx中怎么配置https证书

发布时间:2021-07-13 10:55:31 作者:Leah
来源:亿速云 阅读:238
# Nginx中怎么配置HTTPS证书

## 前言

在当今互联网环境中,HTTPS已成为网站安全的标准配置。作为最流行的Web服务器之一,Nginx配置HTTPS证书不仅能提升数据传输安全性,还能改善SEO排名和用户信任度。本文将详细介绍从证书申请到Nginx配置的完整流程。

## 一、HTTPS基础概念

### 1.1 什么是HTTPS
HTTPS(Hyper Text Transfer Protocol Secure)是HTTP的安全版本,通过SSL/TLS协议对传输数据进行加密。与HTTP的明显区别:
- 默认端口:443(HTTP为80)
- 需要数字证书验证身份
- 数据传输加密

### 1.2 证书类型对比
| 类型 | 验证级别 | 颁发速度 | 适用场景 |
|------|----------|----------|----------|
| DV   | 域名验证 | 分钟级   | 个人博客、测试环境 |
| OV   | 组织验证 | 1-3天    | 企业官网 |
| EV   | 扩展验证 | 1-7天    | 金融、电商 |

## 二、证书获取方式

### 2.1 免费证书申请(Let's Encrypt)
```bash
# 安装Certbot工具
sudo apt install certbot python3-certbot-nginx

# 获取证书(需提前配置好DNS解析)
sudo certbot --nginx -d example.com -d www.example.com

证书特点: - 有效期90天 - 支持自动续期 - 通配符证书需DNS验证

2.2 商业证书购买

推荐供应商: - DigiCert - GlobalSign - Sectigo

购买后通常获得: 1. 域名证书(.crt或.pem) 2. 私钥文件(.key) 3. 中间证书链(CA Bundle)

三、Nginx证书配置详解

3.1 基础配置模板

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/private.key;
    
    # 启用TLS 1.2/1.3
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # 优化加密套件
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    
    # 其他配置...
}

3.2 关键参数说明

  1. ssl_certificate:证书文件路径,支持PEM格式
  2. ssl_certificate_key:私钥文件路径
  3. ssl_session_cache:建议设置为shared:SSL:10m
  4. ssl_session_timeout:推荐24小时(1440m)

3.3 完整优化配置示例

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com;
    
    # 证书路径(需替换实际路径)
    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    
    # 中间证书链(可选)
    ssl_trusted_certificate /etc/nginx/ssl/ca-bundle.crt;
    
    # 协议与加密配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    
    # 会话缓存优化
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1440m;
    ssl_session_tickets off;
    
    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    
    # HSTS头(谨慎开启)
    add_header Strict-Transport-Security "max-age=63072000" always;
    
    # 其他站点配置...
    root /var/www/html;
    index index.html;
}

四、高级配置技巧

4.1 证书自动续期

通过crontab设置自动续期:

# 每月1号凌晨3点执行续期
0 3 1 * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

4.2 多域名配置方案

server {
    listen 443 ssl;
    server_name example.com www.example.com;
    
    # 共用同一套证书
    ssl_certificate /path/to/wildcard.crt;
    ssl_certificate_key /path/to/wildcard.key;
    
    # 根据域名不同返回不同内容
    if ($host = 'www.example.com') {
        return 301 https://example.com$request_uri;
    }
}

4.3 混合内容解决方案

# 强制重定向HTTP到HTTPS
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

# 处理HTTPS下的混合内容
add_header Content-Security-Policy "upgrade-insecure-requests";

五、常见问题排查

5.1 证书验证工具

  1. 在线检测:

  2. 本地验证命令:

# 检查证书链完整性
openssl verify -CAfile ca-bundle.crt your_domain.crt

# 检查端口443是否开放
nc -zv example.com 443

5.2 典型错误处理

  1. SSL_CTX_use_PrivateKey错误

    • 原因:私钥与证书不匹配
    • 解决:重新生成CSR或检查文件权限
  2. 证书链不完整

    • 症状:部分浏览器显示警告
    • 修复:合并中间证书到证书文件
  3. TLS版本不兼容

    • 现象:老旧设备无法访问
    • 调整:保留TLSv1.2同时禁用SSLv3

六、性能优化建议

6.1 会话恢复技术

ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;

6.2 OCSP Stapling配置

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;

6.3 证书热更新方案

# 不中断服务重载证书
mv new.crt /etc/nginx/ssl/ && \
nginx -s reload

结语

通过本文的详细指导,您应该已经掌握了在Nginx中配置HTTPS证书的全流程。实际部署时需注意: 1. 定期检查证书有效期 2. 关注TLS协议安全更新 3. 使用监控工具持续观察HTTPS状态

建议每6个月进行一次安全配置审查,保持服务器的最佳安全状态。

附录:常用证书文件扩展名说明 - .crt/.pem:证书文件 - .key:私钥文件 - .csr:证书签名请求 - .pfx/.p12:包含私钥的证书包(需转换后使用) “`

注:本文实际约2150字,包含技术细节、配置示例和实用建议,采用标准的Markdown格式,可直接用于技术文档发布。

推荐阅读:
  1. 如何购买https证书以及nginx配置https
  2. 基于Nginx配置https证书

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx https

上一篇:angularJS中用post方法时后台拿不到值怎么办

下一篇:如何修改TCP连接数配置

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》