ssl新闻资讯

文档中心

Nginx澶氬煙鍚峉SL璇佷功閰嶇疆鎸囧崡涓€鏈哄鐢ㄥ畨鍏ㄦ棤蹇?txt

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

什么是多域名SSL证书?

2Nginx澶氬煙鍚峉SL璇佷功閰嶇疆鎸囧崡涓€鏈哄鐢ㄥ畨鍏ㄦ棤蹇?txt

想象你经营着好几家网店,每家都有不同的域名:shop1.com、shop2.com、blog.shop1.com等等。要为每个网站单独配置服务器不仅麻烦,还浪费资源。多域名SSL证书(也叫SAN证书)就像是一把万能钥匙,可以同时保护多个不同的域名。

举个例子:

- 单域名证书:只能保护 www.example.com

- 多域名证书:可以同时保护 example.com、shop.example.com、api.example.org 等多个完全不相关的域名

为什么需要多域名SSL配置?

1. 成本效益:一张证书保护多个域名,比单独购买多个证书便宜

2. 管理简便:只需维护一个证书文件,更新和续期都更方便

3. 性能优化:减少TLS握手次数,提升网站加载速度

实际案例:某电商平台拥有主站(example.com)、移动端(m.example.com)、API接口(api.example.com)三个子域。使用多域名SSL后:

- 运维工作量减少60%

- SSL相关故障率下降75%

- 每年节省约$500的证书费用

Nginx配置前的准备工作

在开始之前,你需要准备好:

1. 有效的多域名SSL证书(包含.crt和.key文件)

2. Nginx服务器root权限

3. 需要保护的域名已经解析到服务器IP

以常见的Certbot申请为例:

```bash

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d shop.example.com -d api.example.org

```

这个命令会为example.com、shop.example.com和api.example.org三个域名生成一个联合证书。

Nginx基础配置方法

单个server块配置多个域名

这是最简单的配置方式,适合所有域名使用相同网站内容的情况:

```nginx

server {

listen 443 ssl;

server_name example.com www.example.com shop.example.com;

ssl_certificate /etc/ssl/certs/multi_domain.crt;

ssl_certificate_key /etc/ssl/private/multi_domain.key;

其他通用配置...

}

多个server块共享同一证书

更常见的场景是不同域名需要展示不同内容:

第一个网站配置

server_name example.com www.example.com;

root /var/www/example;

其他专属配置...

第二个网站配置

server_name shop.example.com;

ssl_certificate /etc/ssl/certs/multi_domain.crt;

root /var/www/shop;

注意这里两个server块引用了相同的证书文件,但服务不同的网站内容。

HTTPS强制跳转最佳实践

为了确保所有流量都走加密通道,我们需要设置HTTP到HTTPS的自动跳转:

listen 80;

HTTP自动跳转到HTTPS

return 301 https://$host$request_uri;

这个配置会捕获所有HTTP请求,并301重定向到对应的HTTPS地址。

OCSP Stapling性能优化

OCSP Stapling可以显著提高SSL握手速度:

ssl_stapling on;

ssl_stapling_verify on;

Cloudflare DNS作为OCSP验证器示例

resolver 1.1.1.1 valid=300s;

resolver_timeout 5s;

ssl_trusted_certificate /path/to/fullchain.pem;

启用后可以减少客户端验证时间约200-300ms。

HSTS安全增强配置

HTTP严格传输安全(HSTS)可以防止降级攻击:

```nginx

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

这个头部告诉浏览器:"未来两年内都只能用HTTPS访问我和我的子域"。

SNI技术处理旧浏览器兼容性

对于不支持SNI(Server Name Indication)的古老浏览器(如IE6/WinXP),可以设置默认回退:

listen 443 ssl default_server;

"兜底"的旧版兼容性证书

这样当老浏览器无法指明要访问哪个域时,至少能看到一个有效(但不一定匹配)的HTTPS页面。

CSR生成技巧与密钥管理

生成CSR时包含所有备用名称(SAN):

openssl req -new -newkey rsa:2048 -nodes -keyout multi.key \

-out multi.csr \

-subj "/CN=example" \

-addext "subjectAltName=DNS:example,DNS:www.example,DNS:shop.examle"

密钥安全管理建议:

1. key文件权限设置为600 (chmod600)

2. key文件所有权设为root (chown root:root)

3. key文件存储在/etc/ssl/private等受限目录

Let's Encrypt自动化示例

使用Certbot自动续期多域名单个证书:

certbot certonly --webroot \

-w /var/www/html -d example \

-w /var/www/shop -d shop.examle \

--expand --keep-until-expiring --non-interactive --agree-tos

`--expand`参数允许后续添加新域到现有证书记录中。

TLS协议最佳实践推荐

在Nginx中禁用不安全的协议和密码套件:

ssl_protocols TLSv1.2 TLSv1.3;

Mozilla推荐的现代兼容性套件

ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256...';

ssl_prefer_server_ciphers on;

这确保了只使用最安全的加密算法组合。

CDN与Nginx配合注意事项

当使用Cloudflare等CDN时:

1. CDN上安装主SSL证书记录(Full模式)

2.Nginx只需处理CDN到源站的内部加密(通常用自签名或免费证书记录即可)

3.HTTPS头需要特殊处理避免冲突

典型错误案例:某站点同时在CDN和源站部署了HSTS头部导致无限重定向循环。

SSL性能监控与调优技巧

查看当前SSL握手统计信息:

```bash

nvidia-smi

GPU加速监控(如有)

openssl speed rsa2048

CPU加密性能测试

Nginx状态监控模块示例

stub_status on;

access_log /var/log/nginx/ssl_perf.log custom_format;

常见性能瓶颈排查点:

- RSA密钥长度超过2048位导致CPU负载过高

- OCSP响应超时影响首次加载速度

- Session缓存未启用导致重复握手

通过以上全面的Nginx多域名单个SSL证书记录部署方案,您可以实现安全性与管理效率的双重提升。记住定期检查证书记录到期时间并设置自动续期任务!

TAG:nginx多域名ssl证书配置,nginx配置多个ssl证书,nginx 多域名ssl认证,nginx多域名多端口,nginx 多域名配置,nginx severname配置多个地址