ssl新闻资讯

文档中心

Nginx閰嶇疆SSL澶氳瘉涔︽寚鍗楄交鏉惧疄鐜颁竴鏈哄绔橦TTPS鍔犲瘑

时间 : 2025-09-27 16:27:34浏览量 : 2

2Nginx閰嶇疆SSL澶氳瘉涔︽寚鍗楄交鏉惧疄鐜颁竴鏈哄绔橦TTPS鍔犲瘑

在今天的互联网环境中,HTTPS加密已成为网站安全的标配。对于运维人员来说,如何在单台服务器上通过Nginx为多个域名配置不同的SSL证书(即“多证书”),是一项必备技能。本文将通过通俗易懂的案例,手把手教你实现Nginx的SSL多证书配置。

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

想象一下:你有一台服务器,但托管了两个网站:

- 官网 `example.com`

- 博客 `blog.example.com`

如果只用一个证书:

1. 用户访问博客时,浏览器可能提示“证书与域名不匹配”。

2. 企业级场景中,不同子公司可能需要独立的证书(如 `a.com` 和 `b.com`)。

解决方案:为每个域名配置独立的SSL证书。

二、准备工作

1. 获取证书

- 从Let's Encrypt申请免费证书(推荐`certbot`工具)。

- 商业证书(如DigiCert、GeoTrust)。

- 示例文件路径:

- `example.com`:`/etc/ssl/example.crt` + `example.key`

- `blog.example.com`:`/etc/ssl/blog.crt` + `blog.key`

2. 确认Nginx支持SNI

```bash

nginx -V | grep -i sni

```

若输出包含`TLS SNI support enabled`,则支持(现代Nginx默认开启)。

三、配置实战:基于域名的多证书

以下是经典配置模板,以两个域名为例:

```nginx

server {

listen 443 ssl;

server_name example.com;

证书路径

ssl_certificate /etc/ssl/example.crt;

ssl_certificate_key /etc/ssl/example.key;

SSL优化参数(可选)

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

location / {

root /var/www/example;

index index.html;

}

}

server_name blog.example.com;

另一个域名的独立证书

ssl_certificate /etc/ssl/blog.crt;

ssl_certificate_key /etc/ssl/blog.key;

root /var/www/blog;

```

关键点

- `server_name`区分不同域名。

- 每个域名指向自己的证书和私钥。

四、高级技巧:通配符与SAN证书

场景1:通配符证书

如果子域名众多(如 `a.example.com`, `b.example.com`),可用通配符证书:

ssl_certificate /etc/ssl/wildcard.example.crt;

ssl_certificate_key /etc/ssl/wildcard.example.key;

> 注意:通配符仅匹配同级子域(如`*.example.com`不匹配`test.a.example.com`)。

场景2:SAN(主题备用名称)证书

一张证书包含多个域名(适合小型企业):

ssl_certificate /etc/ssl/multi_domain.crt;

包含example.com和blog.example.com

ssl_certificate_key /etc/ssl/multi_domain.key;

五、常见问题排查

1. 错误:“SSL handshake failed”

- 检查私钥是否匹配:

```bash

openssl x509 -noout -modulus -in example.crt | openssl md5

openssl rsa -noout -modulus -in example.key | openssl md5

```

两者输出的MD5值必须一致。

2. 浏览器提示“不安全”

- 确保证书链完整。商业证书可能需要拼接中间CA:

cat example.crt intermediate.crt > combined.crt

3. Nginx报错“no valid SSL certificate”

- 检查文件路径权限:

chmod 600 /etc/ssl/*.key && chown nginx:nginx /etc/ssl/*.key

六、性能优化建议

1. 启用OCSP Stapling

减少浏览器验证证书的时间:

```nginx

ssl_stapling on;

ssl_stapling_verify on;

resolver 8.8.8.8 valid=300s;

2. 会话复用

提升HTTPS连接速度:

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

****

通过Nginx配置多SSL证书,既能满足安全需求,又能灵活支持多站点。关键步骤归纳为三点:

1. 分域名配置:每个`server{}`块绑定独立证书。

2. 校验证书一致性:确保证书、私钥、链完整。

3. 持续监控:定期检查日志和浏览器兼容性。

现在就去试试吧!遇到问题欢迎在评论区留言讨论。

TAG:nginx ssl 多证书,nginx配置证书链,nginx部署ssl证书,nginx ssl pem,nginx 多个证书