多域名SSL证书申请,统一HTTPS配置
多域名SSL证书申请和统一HTTPS配置,核心目标是让同一台服务器上的多个域名都能通过HTTPS安全访问,同时避免为每个域名单独申请和管理证书的麻烦。
本文面向零基础用户,从证书选型、申请、Nginx配置到验证,一步步带你完成多域名HTTPS部署。
先搞清楚你的证书该选哪种
动手之前,需要先根据域名数量和类型选择证书。
常见选择有单域名证书、通配符证书和多域名SAN证书。
- 单域名证书:只保护一个具体域名,如
www.example.com或example.com,适合只有一个主域名的场景。 - 通配符证书:保护一个主域名及其所有同级子域名,如
*.example.com可覆盖blog.example.com、shop.example.com,但不覆盖example.com本身。 - 多域名SAN证书:一张证书可包含多个完全不同的域名,如
example.com、example.net、test.org,适合域名分散的情况。
如果多个域名共享同一主域名,优先考虑通配符证书加主域名;
如果域名完全不同,多域名SAN证书更合适。
申请渠道可选云服务商或证书颁发机构,免费证书通常有90天有效期,需设置自动续期。
申请证书前的必要准备
无论用哪种方式申请,都需要先完成域名解析和服务器准备。
- 确保所有需要HTTPS的域名都已添加A记录,指向你的服务器公网IP。
- 开放服务器安全组的80和443端口,80用于域名验证,443用于HTTPS访问。
- 在服务器上安装Nginx或Apache,本文以Nginx为例。
- 准备好证书文件:通常包含
.crt(证书链)和.key(私钥),部分服务商还会提供.pem文件。
Nginx多域名HTTPS配置步骤
推荐将每个域名的HTTPS配置拆分为独立文件,便于管理。
以下是一个多域名统一配置的示例。
假设你有两个域名:a.com 和 b.com,证书文件放在 /etc/nginx/ssl/ 目录下。
# /etc/nginx/conf.d/a.com.conf
server {
listen 443 ssl http2;
server_name a.com www.a.com;
ssl_certificate /etc/nginx/ssl/a.com.crt;
ssl_certificate_key /etc/nginx/ssl/a.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/a.com;
index index.html;
}
# HTTP自动跳转HTTPS
server {
listen 80;
server_name a.com www.a.com;
return 301 https://$host$request_uri;
}
b.com 的配置文件类似,只需替换 server_name 和证书路径。
如果使用多域名SAN证书,可以在多个 server 块中引用同一份证书文件。
配置完成后,执行 nginx -t 测试语法,然后 systemctl reload nginx 重载服务。
常见报错与避坑指南
- 证书链不完整:浏览器提示“证书不受信任”,通常是因为只上传了域名证书,未包含中间证书。建议使用服务商提供的完整链文件,或用
cat命令合并。 - 端口冲突:如果80端口被其他程序占用,会导致验证失败或跳转异常。用
netstat -tlnp | grep 80检查。 - 通配符证书不覆盖主域名:
*.example.com不包含example.com,需单独添加或申请包含主域名的证书。 - HTTP跳转循环:检查Nginx配置中是否有重复的
return 301或代理设置。 - 证书过期:免费证书有效期较短,务必配置自动续期任务,如
certbot renew --quiet。
验证HTTPS是否生效
配置完成后,用以下方法确认结果:
- 浏览器访问
https://你的域名,地址栏显示锁形图标,点击可查看证书信息。 - 使用
curl -I https://你的域名查看返回状态码,应为200或301。 - 在线工具如SSL Labs测试可检查证书链和协议安全性。
- 检查所有域名是否都正确跳转,无混合内容警告。
如果遇到问题,优先检查Nginx错误日志:tail -f /var/log/nginx/error.log,根据提示定位证书路径或权限问题。
多域名SSL证书申请和统一HTTPS配置并不复杂,关键是选对证书类型、正确配置Nginx并做好验证。
按本文步骤操作,你可以让多个域名同时启用HTTPS,提升网站安全性和用户信任度。