为何在 Nginx 上部署通配符 SSL 证书
采用 443 端口 HTTPS 并启用 SSL 证书的网站,比基于 80 端口 HTTP 的网站安全得多,因为 HTTPS 传输的数据在公网上是经过加密的。Nginx 通配符 SSL 证书本质上是一个包含站点公钥、身份及其他相关信息的文件,存放于源站 Web 服务器上。
默认情况下,SSL 证书仅覆盖主域名"example.com",除非显式配置,否则不包含子域名。而通配符 SSL 证书只需一张证书即可同时保护主域名"example.com"及其所有子域名"*.example.com"。例如您拥有"example.com",通配符证书将覆盖 example.com、www.example.com、blog.example.com、mail.example.com 等全部子域。
本文将带您完成在 Nginx 服务器上安装通配符 SSL 证书的完整流程。
第一步:在 Nginx 服务器上为通配符证书创建 CSR
安装之前,必须先生成 CSR(证书签名请求),其中包含标识域名、组织、所在地等所需信息,随后提交给受信任的 CA 用以签发 SSL 证书。
访问 Nginx 服务器
首先使用 PuTTY 等任意 SSH 客户端登录 Nginx 服务器。
进入 SSL 目录
建议将 SSL 相关文件存放在专用目录,可用如下命令切换:
cd /etc/nginx/ssl
生成 CSR 与私钥
执行以下命令生成 CSR 与私钥(请将命令中的"domain-name"替换为您的实际域名):
openssl req –new –newkey rsa:2048 –nodes –keyout domain-name.key –out domain-name.csr
回车后需填写若干信息:国家名称(两位字母代码)、省/州名称、所在地名称(城市)、组织名称(公司名)、组织单位名称(部门,如 IT 或安全)、通用名(Common Name,即您的域名,通配符需前缀星号,如 *.example.com)、电子邮件地址。
定位 CSR 与私钥
生成完成后,CSR 与私钥保存在用户目录(本例为"/etc/nginx/ssl")。可用如下命令查看 CSR 内容,复制时务必包含"-----BEGIN CERTIFICATE REQUEST-----"与"-----END CERTIFICATE REQUEST-----"首尾标记:
cat /etc/nginx/ssl/domain-name.csr
将 CSR 提交给 CA
使用生成的 CSR(domain-name.csr)向受信任的 CA(如 Comodo、DigiCert、Sectigo、GeoTrust、RapidSSL、AlphaSSL、GlobalSign 等)申请通配符 SSL 证书。
第二步:在 Nginx 服务器上安装通配符 SSL 证书
合并主证书与中间证书文件
将主 SSL 证书(domain_com.crt)与中间 CA 包(domain_com.ca-bundle)合并为单个文件,确保 Nginx 提供完整证书链(含服务器证书与中间证书)。命令行方式:
cat domain_com.crt domain_com.ca-bundle > ssl-bundle.crt
若使用文本编辑器(如记事本):分别打开 domain_com.crt 与 domain_com.ca-bundle,复制 domain_com.crt 的全部内容,粘贴到 domain_com.ca-bundle 文件顶部,另存为 ssl-bundle.crt。
将合并证书与私钥存入 Nginx SSL 目录
将合并后的 SSL 包(ssl-bundle.crt)与私钥(example_com.key)移动到合适的 Nginx SSL 文件夹:
mkdir -p /etc/nginx/ssl/example_com/
mv ssl-bundle.crt /etc/nginx/ssl/example_com/
mv example_com.key /etc/nginx/ssl/example_com/
sudo chmod 600 /etc/nginx/ssl/example_com/example_com.key
修改 Nginx 配置文件
配置 Nginx 使用合并证书与私钥,打开对应域名的配置文件(通常位于 /etc/nginx/sites-available/):
sudo nano /etc/nginx/sites-available/example_com
编辑 server 块以包含 SSL 证书与私钥:
server {
listen 443 ssl;
server_name example.com *.example.com;
ssl_certificate /etc/nginx/ssl/example_com/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/example_com/example_com.key;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
}
注意:对于通配符证书,配置文件中各域名或子域名应在相应 server 块中正确配置。
启用 OCSP Stapling(可选但推荐)
为提升 SSL 握手性能,可启用 OCSP Stapling,使 Nginx 无需客户端直接联系 CA 即可提供证书吊销状态。在 server 块中添加如下指令:
## OCSP Stapling
resolver 127.0.0.1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/example_com/ca-bundle.crt;
ssl_stapling on 启用 OCSP 装订;ssl_stapling_verify on 确保 Nginx 校验 OCSP 响应;ssl_trusted_certificate 指向含必要中间与根证书的 CA 包;resolver 指定 Nginx 获取 OCSP 响应所用的 DNS 解析器。注意:OCSP 装订正常工作需 ca-bundle.crt 中包含全部必要的中间与根证书。
测试配置
修改配置后务必测试,确保一切正常:
sudo nginx -t
若配置有效,将看到类似"nginx: configuration file /etc/nginx/nginx.conf test is successful"的提示。
重启 Nginx
配置测试通过后,重启 Nginx 使更改生效:
sudo systemctl restart nginx
第三步:验证 SSL 证书
安装通配符 SSL 证书后,验证其是否正常工作至关重要。
使用在线 SSL 检测工具:立海世纪等站点提供免费的 SSL 状态检测工具,输入域名即可生成详细的 SSL 安装报告。
通过浏览器验证:在浏览器中以 https:// 前缀访问网站,查看地址栏附近是否出现锁形图标,确认 SSL 已启用。
通过命令行验证:可使用 OpenSSL 从命令行校验证书:
openssl s_client -connect domain-name.com:443
该命令可获取证书到期日期、中间证书链等重要详情。
结语
在 Nginx 服务器上安装通配符 SSL 证书,可确保主域名及其全部关联子域名均受到强加密保护。若您自托管 Nginx 服务器并希望安装通配符证书,需先从知名 CA 购买后生成 CSR 并完成安装,随后按本指南步骤即可轻松验证安装结果。该流程有助于维护服务器与用户之间的安全通信,提升信任与可信度。