ssl新闻资讯

文档中心

Nginx閰嶇疆SSL閫氶厤璇佷功瀹屾暣鎸囧崡涓€娆¤В鍐虫墍鏈夊瓙鍩熷悕HTTPS鍔犲瘑闂

时间 : 2025-09-27 16:27:51浏览量 : 3

什么是SSL通配证书?

2Nginx閰嶇疆SSL閫氶厤璇佷功瀹屾暣鎸囧崡涓€娆¤В鍐虫墍鏈夊瓙鍩熷悕HTTPS鍔犲瘑闂

想象一下你管理着公司网站,主域名是example.com,但还有shop.example.com、blog.example.com、api.example.com等多个子域名。如果每个子域名都要单独购买和配置SSL证书,不仅成本高,管理起来也麻烦。这时候SSL通配证书(Wildcard SSL Certificate)就像一把"万能钥匙",它可以用一张证书保护*.example.com下的所有子域名。

举个例子:就像小区门禁卡可以刷开所有单元楼的门,而不用为每个单元单独配钥匙。

为什么需要通配证书?

1. 成本效益:通常比购买多个单域名证书更便宜

2. 管理简便:只需维护一张证书

3. 扩展灵活:新增子域名无需重新申请证书

4. 安全统一:确保所有子域名的加密标准一致

实际案例:某电商平台有10个子域名系统(支付、会员、商品等),使用通配证书后:

- 年度证书费用从$2000降至$300

- 配置时间从8小时缩短到30分钟

- 新上线促销子域时可立即启用HTTPS

获取SSL通配证书的三种途径

1. 商业CA购买(推荐生产环境使用)

知名机构如DigiCert、Sectigo提供的通配证书:

- 价格范围:$200-$1000/年

- 特点:浏览器100%信任,提供保险保障

- 适合场景:企业官网、电商平台

2. Let's Encrypt免费申请(适合测试环境)

通过Certbot工具获取:

```bash

sudo certbot certonly --manual --preferred-challenges=dns -d *.example.com

```

注意点:

- 每90天需要续期

- 需要验证DNS TXT记录

- 不支持OV/EV级别验证

3. OpenSSL自签名(开发环境专用)

生成自签名通配证书命令:

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 \

-nodes -keyout example.key -out example.crt \

-subj "/CN=*.example.com" \

-addext "subjectAltName=DNS:*.example.com"

Nginx配置全流程详解(以Let's Encrypt为例)

Step1: DNS解析准备

在DNS服务商处添加两条记录:

类型 名称 值

A @ 服务器IP

CNAME * example.com.

Step2: Certbot申请证书

执行命令时会有DNS验证环节:

sudo certbot certonly --manual --preferred-challenges=dns \

-d example.com -d *.example.com

系统会提示添加类似这样的TXT记录:

_acme-challenge.example.com. TXT "gfj9Xq...Rg85nM"

Step3: Nginx配置文件修改

典型配置示例(/etc/nginx/sites-available/default):

```nginx

server {

listen 443 ssl;

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

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...';

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;

HSTS安全增强(谨慎开启)

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

location / {

proxy_pass http://backend_$subdomain;

...其他代理设置...

}

}

关键参数说明:

1. `server_name`使用正则表达式匹配任意子域名

2. `proxy_pass`利用捕获的subdomain变量动态路由

3. `ssl_session_cache`提升HTTPS性能

Step4: HTTP自动跳转HTTPS

在80端口配置中添加跳转规则:

```nginx

listen 80;

server_name *.example.com;

ACME验证路径保留(供续期使用)

location ^~ /.well-known/acme-challenge/ {

root /var/www/html;

try_files $uri =404;

}

location / {

return 301 https://$host$request_uri;

SSL配置的进阶技巧与排错指南

OCSP装订提升性能

在Nginx中添加以下配置减少客户端验证延迟:

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /path/to/chain.pem;

resolver 8.8.8.8 valid=300s;

resolver_timeout 5s;

HTTPS安全评分优化建议

用SSL Labs测试后常见的改进点:

1. 密钥强度不足

```bash

sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096

```

2. 缺少中间证书

cat example.crt intermediate.crt > chained.crt

3. 过时的TLS协议

```nginx

Wrong ?

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Right ?

ssl_protocols TLSv1.2 TLSv1.3;

CDN场景的特殊处理

当使用Cloudflare等CDN时:

Cloudflare真实IP识别设置

set_real_ip_from xxx.yyy.ccc.ddd;

real_ip_header CF-Connecting-IP;

SSL卸载配置调整

ssl_certificate cloudflare-origin.pem;

ssl_certificate_key origin-private.key;

FAQ常见问题解答

Q:为什么Chrome显示"无效的证书链"?

A:典型原因包括中间证书缺失或顺序错误。检查命令:

```bash

openssl verify -CAfile chain.crt domain.crt

Q:如何查看通配证书记录的所有SAN?

A:使用这个命令解码信息:

openssl x509 -in certificate.crt -text | grep DNS

Q:新加的子域名无法访问怎么办?

A:按这个检查清单排查:

1?? DNS解析是否生效(nslookup test.example.com)

2?? Nginx是否reload最新配置(sudo nginx -t && sudo systemctl reload nginx)

通过本文的详细指导,你应该已经掌握了Nginx下SSL通配证的全套配置方法。记住定期检查证到期时间并设置自动续期任务,这样才能确保持续的安全防护。

TAG:nginx配置ssl通配证书,