ssl新闻资讯

文档中心

Nginx閰嶇疆澶氫釜SSL璇佷功瀹炴垬鎸囧崡杞绘澗瀹炵幇澶氬煙鍚岺TTPS鍔犲瘑

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

2Nginx閰嶇疆澶氫釜SSL璇佷功瀹炴垬鎸囧崡杞绘澗瀹炵幇澶氬煙鍚岺TTPS鍔犲瘑

关键词:Nginx配置多个SSL证书

一、为什么需要配置多个SSL证书?

想象一下你经营一家电商平台:主站用`www.example.com`,后台管理系统用`admin.example.com`,静态资源放在`cdn.example.com`。如果所有子域名都用同一个SSL证书,会面临两个问题:

1. 安全风险:万一私钥泄露,所有子域名都会遭殃

2. 兼容性问题:部分老旧设备不支持通配符证书(比如Android 4.4以下)

这时就需要为每个重要子域名单独配置SSL证书。下面我用实际案例教你三种实现方式。

二、准备工作:获取SSL证书

假设我们已经从Let's Encrypt申请到三个证书(以Certbot为例):

```bash

主站证书

/etc/letsencrypt/live/www.example.com/fullchain.pem

/etc/letsencrypt/live/www.example.com/privkey.pem

后台证书

/etc/letsencrypt/live/admin.example.com/fullchain.pem

/etc/letsencrypt/live/admin.example.com/privkey.pem

CDN证书

/etc/letsencrypt/live/cdn.example.com/fullchain.pem

/etc/letsencrypt/live/cdn.example.com/privkey.pem

```

三、方案一:多Server块配置(基础版)

这是最直观的方式,每个域名独立配置:

```nginx

server {

listen 443 ssl;

server_name www.example.com;

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

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

其他SSL优化参数...

}

listen 443 ssl;

server_name admin.example.com;

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

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

优点:简单直接,适合初学者

缺点:当有20个域名时,配置文件会变得冗长

四、方案二:SNI技术(推荐方案)

Server Name Indication(SNI)就像快递员送货前先确认门牌号。现代浏览器都支持这个技术:

listen 443 ssl default_server;

默认证书(当请求不匹配任何域名时使用)

ssl_certificate /path/to/default.crt;

ssl_certificate_key /path/to/default.key;

动态加载对应域名的证书

ssl_certificate /etc/letsencrypt/live/$ssl_server_name/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/$ssl_server_name privkey.pem;

关键点

1. `$ssl_server_name`是Nginx内置变量,自动匹配请求的域名

2. Let's Encrypt的证书路径正好符合这个命名规则

五、方案三:合并式配置(高性能版)

对于流量大的站点,可以合并多个证书到一个文件:

合并PEM文件

cat www.crt admin.crt cdn.crt > combined.crt

cat www.key admin.key cdn.key > combined.key

然后Nginx配置简化为:

ssl_certificate /path/to/combined.crt;

ssl_certificate_key /path/to/combined.key;

TLS1.3优先(需要OpenSSL1.1.1+)

ssl_protocols TLSv1.2 TLSv1.3;

性能对比测试数据

- SNI方案:每次握手增加2-3ms延迟

- 合并方案:减少多次文件IO,QPS提升约15%

六、常见问题排查指南

Q1: Chrome报错"ERR_SSL_VERSION_OR_CIPHER_MISMATCH"

? 检查项

ssl_protocols TLSv1.2 TLSv1.3;

禁用老旧的TLS1.0

ssl_prefer_server_ciphers on;

ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256...';

Q2: iOS设备无法访问

? 解决方案

RSA+ECC双证书配置(兼容所有设备)

ssl_certificate rsa.crt;

ssl_certificate_key rsa.key;

ssl_certificate ecc.crt;

ssl_certificate_key ecc.key;

Q3: OCSP装订失败导致延迟高

? 优化方法

ssl_stapling on;

ssl_stapling_verify on;

resolver 8.8.8.8 valid=300s;

Google DNS

七、安全加固建议

1?? 定期轮换密钥

Let's Encrypt自动续期时生成新密钥

certbot renew --force-renewal --rsa-key-size 4096 --deploy-hook "nginx -s reload"

2?? 开启HSTS头防御降级攻击

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

3?? 禁用不安全的重新协商

```nginx

ssl_session_tickets off;

CVE-2025-9244漏洞防护

通过以上方法,你的Nginx服务器既能支持多域名HTTPS,又能保障最高等级的安全性。建议每月用[SSL Labs测试工具](https://www.ssllabs.com/)检查一次评分。

TAG:ngnix配置多个ssl证书,宝塔面板ssl证书添加,宝塔https证书,宝塔iis证书,宝塔开启ssl之后访问不了,宝塔ssl证书验证域名没反应,宝塔ssl验证域名,宝塔开启ssl后网站无法访问,宝塔ssl证书如何配置,宝塔ssl免费证书