ssl新闻资讯

文档中心

Nginx娉涘煙鍚峉SL璇佷功閰嶇疆鎸囧崡涓€娆℃悶瀹氭墍鏈夊瓙鍩熷悕瀹夊叏

时间 : 2025-09-27 16:27:08浏览量 : 1

2Nginx娉涘煙鍚峉SL璇佷功閰嶇疆鎸囧崡涓€娆℃悶瀹氭墍鏈夊瓙鍩熷悕瀹夊叏

关键词:Nginx泛域名配置SSL证书

一、为什么需要泛域名SSL证书?

想象一下:你运营一个SaaS平台,用户拥有`xxx.yourdomain.com`格式的子域名。如果每个子域名单独申请SSL证书:

1. 管理噩梦:1000个子域名=1000次申请+1000次续期

2. 成本爆炸:单域名证书均价¥200/年,1000个就是20万!

3. 部署延迟:新子域名上线需等待证书签发

泛域名证书(Wildcard SSL)就像"万能钥匙":

- 一张`*.yourdomain.com`证书覆盖所有同级子域名

- Let's Encrypt免费签发,商业证书约¥1500/年(不限子域名数量)

二、准备工作清单

| 必备项 | 示例值 | 作用说明 |

|--|--|-|

| 服务器环境 | Ubuntu 20.04 + Nginx 1.18 | 需支持SNI扩展 |

| 域名控制权 | DNS解析权限 | 用于验证证书所有权 |

| ACME客户端 | certbot | Let's Encrypt官方工具 |

```bash

安装certbot示例(Ubuntu)

sudo apt update

sudo apt install certbot python3-certbot-nginx

```

三、Nginx配置实战步骤

?? Step1. 基础配置模板

```nginx

server {

listen 80;

server_name ~^(?.+)\.example\.com$;

HTTP自动跳转HTTPS(重要!)

return 301 https://$host$request_uri;

}

?? Step2. SSL证书申请

使用DNS验证方式(适合无公网IP场景)

sudo certbot certonly \

--manual \

--preferred-challenges=dns \

-d *.example.com \

--server https://acme-v02.api.letsencrypt.org/directory

执行后会提示添加DNS TXT记录:

_acme-challenge.example.com. IN TXT "gfj8Xq...zYQ"

?? Step3. Nginx SSL配置

listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

TLS强化配置

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';

ssl_prefer_server_ciphers on;

HSTS头(增强安全性)

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";

四、常见故障排错指南

? 错误1:SSL握手失败

现象:浏览器报"ERR_SSL_VERSION_OR_CIPHER_MISMATCH"

排查

openssl s_client -connect sub.example.com:443 -servername sub.example.com

解决:检查Nginx的`ssl_protocols`是否包含客户端支持的协议版本

? 错误2:证书不匹配

现象:"NET::ERR_CERT_COMMON_NAME_INVALID"

原因:浏览器SNI未正确传递子域名

验证工具:[SSL Labs测试](https://www.ssllabs.com/ssltest/)

五、高级安全加固技巧

1. OCSP装订优化性能

```nginx

ssl_stapling on;

ssl_stapling_verify on;

resolver 8.8.8.8 valid=300s;

```

2. 自动续期设置(避免过期)

```bash

crontab每月自动续期

0 3 */30 * * certbot renew --quiet --post-hook "systemctl reload nginx"

3. 混合内容防护

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

FAQ快速答疑

Q: Let's Encrypt泛域名有效期多久?需要频繁更新吗?

A: 90天有效期,建议配置自动续期(如上文crontab方案)

Q: `*.example.com`能否覆盖二级子域如`app.test.example.com`?

A: 不能!*通配符仅匹配一级子域,二级需单独申请`*.*.example.com`

Q: Nginx reload会导致HTTPS服务中断吗?

A: 不会!reload是优雅重启,保持现有连接的同时加载新配置

> ?? 最佳实践建议:生产环境建议搭配使用CDN(如Cloudflare),在其边缘节点卸载SSL加解密流量,既提升性能又降低后端服务器压力。

TAG:nginx泛域名配置ssl证书,nginx如何配置ssl证书,nginx配置多个ssl证书,nginx域名绑定,nginx 域名,nginx ssl_ciphers配置