Nginx怎么配置SSL证书部署HTTPS网站

发布时间:2022-04-27 14:11:50 作者:iii
来源:亿速云 阅读:348
# Nginx怎么配置SSL证书部署HTTPS网站

## 前言

在当今互联网环境中,网站安全性已成为不可忽视的重要议题。HTTPS协议通过SSL/TLS加密技术,能够有效保护用户数据在传输过程中的安全性,防止中间人攻击、数据篡改和窃听。作为广泛使用的Web服务器,Nginx配置SSL证书实现HTTPS已成为运维标配技能。

本文将详细介绍从证书申请到Nginx配置的全流程,涵盖单域名、多域名以及HTTP自动跳转HTTPS等实用场景,并提供性能优化建议和常见问题解决方案。

---

## 一、SSL证书基础概念

### 1.1 什么是SSL证书
SSL(Secure Sockets Layer)证书是一种数字证书,用于在客户端和服务器之间建立加密链接。现代实际使用的是TLS(Transport Layer Security)协议,但习惯仍称SSL证书。

证书包含:
- 域名信息
- 证书颁发机构(CA)信息
- 公钥
- 有效期
- 指纹签名

### 1.2 证书类型对比
| 类型       | 验证方式     | 适用场景           | 签发时间  |
|------------|-------------|--------------------|----------|
| DV证书     | 域名验证    | 个人网站、博客     | 10-30分钟|
| OV证书     | 企业验证    | 企业官网           | 3-5工作日|
| EV证书     | 严格验证    | 金融、电商平台     | 5-7工作日|

### 1.3 证书格式说明
- **PEM格式**:Base64编码文本,扩展名通常为.pem/.crt/.key
- **DER格式**:二进制格式,Java环境常用
- **PFX/P12**:包含私钥的打包格式,Windows服务器常用

---

## 二、证书获取方式

### 2.1 商业CA购买
推荐机构:
- DigiCert
- GlobalSign
- Sectigo
- 国内:CFCA、数安时代

### 2.2 免费证书申请
**Let's Encrypt申请示例:**
```bash
# 安装certbot工具
sudo apt install certbot python3-certbot-nginx

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

2.3 自签名证书生成

测试环境可使用OpenSSL生成:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/nginx/ssl/self.key \
-out /etc/nginx/ssl/self.crt

三、Nginx配置实战

3.1 基础配置模板

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    
    # 协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    
    # 加密套件
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    
    # 其他配置...
    location / {
        root /var/www/html;
        index index.html;
    }
}

3.2 多域名配置方案

server {
    listen 443 ssl;
    server_name site1.example.com;
    ssl_certificate /path/to/site1.crt;
    ssl_certificate_key /path/to/site1.key;
    # ...
}

server {
    listen 443 ssl;
    server_name site2.example.com;
    ssl_certificate /path/to/site2.crt;
    ssl_certificate_key /path/to/site2.key;
    # ...
}

3.3 HTTP自动跳转HTTPS

推荐方式(301永久重定向):

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

四、高级优化配置

4.1 启用HSTS

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

4.2 OCSP装订配置

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/chain.crt;
resolver 8.8.8.8 valid=300s;

4.3 会话复用优化

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

五、常见问题排查

5.1 证书链不完整

错误现象:浏览器显示”证书不受信任” 解决方案:

# 合并证书链
cat domain.crt intermediate.crt > chained.crt

5.2 混合内容警告

解决方法: - 将页面所有资源URL改为HTTPS - 添加内容安全策略头:

  add_header Content-Security-Policy "upgrade-insecure-requests";

5.3 性能优化建议

  1. 启用TLS 1.3协议
  2. 使用ECDSA证书(比RSA更高效)
  3. 开启Brotli压缩
  4. 合理设置SSL缓存

六、证书维护管理

6.1 自动续期配置

Certbot自动续期:

# 测试续期流程
sudo certbot renew --dry-run

# 实际添加crontab任务
0 3 * * * /usr/bin/certbot renew --quiet

6.2 证书过期监控

推荐工具: - Certbot过期提醒 - Nagios监控 - Prometheus黑盒探测


结语

通过本文的详细指导,您应该已经掌握了在Nginx上配置SSL证书的全流程。实际部署时需要注意: 1. 选择适合业务需求的证书类型 2. 遵循安全最佳实践配置 3. 建立完善的证书维护机制 4. 定期检查SSL Labs评分(https://www.ssllabs.com/ssltest/)

HTTPS不仅是安全需求,现代浏览器已将HTTPS作为诸多新特性的前置条件。尽早部署并优化HTTPS配置,将为您的网站带来更好的安全性和用户体验。 “`

本文共计约2300字,包含: - 基础概念说明 - 证书获取方法 - 详细配置示例 - 性能优化方案 - 故障排查指南 - 维护管理建议

可根据实际需要调整各部分内容的详细程度,或增加特定环境的配置案例。

推荐阅读:
  1. 哪些网站需要HTTPS(SSL证书)
  2. Nginx如何部署https网站并配置地址重写

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

nginx ssl https

上一篇:怎么升级nginx支持HTTP/2服务端推送

下一篇:如何修改nginx站点根目录

相关阅读

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

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