文档中心
Nginx閰嶇疆SSL澶氳瘉涔︽寚鍗楄交鏉惧疄鐜颁竴鏈哄绔橦TTPS鍔犲瘑
时间 : 2025-09-27 16:27:34浏览量 : 2

在今天的互联网环境中,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 多个证书