在部署网站或服务时,SSL 证书已经成为必不可少的配置项。如果你使用 Nginx 或 Apache 托管多个域名,一个非常常见的问题就是:如何高效管理多个域名的 HTTPS 证书?

幸运的是,Certbot 提供了强大的功能,能够自动为多个域名签发和续期 Let’s Encrypt 的免费 SSL 证书。本文将介绍如何使用 Certbot 管理多个域名的证书,提升安全性同时减轻运维负担。


Certbot 简介

Certbot 是由 EFF(电子前哨基金会)开发的一个开源工具,用于从 Let’s Encrypt 获取免费 SSL/TLS 证书,并自动为 Web 服务器进行配置。


安装 Certbot

以 Ubuntu 为例:

sudo apt update
sudo apt install certbot python3-certbot-nginx

单次申请多个域名的证书

Certbot 支持一次为多个域名申请证书。这在多个子域名或绑定多个网站时非常有用。

例如:

sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com

这会生成一个包含所有指定域名的通配证书,并自动配置到 Nginx 中。


分别申请多个域名的证书(推荐做法)

如果你希望不同的域名分开管理(例如每个域名一个项目、一个服务器块),可以为它们分别申请证书:

sudo certbot --nginx -d example.com -d www.example.com
sudo certbot --nginx -d mysite.com -d www.mysite.com

这样每个证书会被保存到独立的路径中,方便你在配置时按域名归档管理。


自动续期

Certbot 安装时会自动创建系统定时任务,执行证书续期:

sudo certbot renew --dry-run

建议定期手动测试一次干运行以确保配置无误。


多证书与 Nginx 配置示例

你的 Nginx 配置可能长这样(两个域名对应两个 server):

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

...
}

server {
listen 443 ssl;
server_name mysite.com;

ssl_certificate /etc/letsencrypt/live/mysite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite.com/privkey.pem;

...
}

常见问题解答

Q1:多个域名用一个证书好,还是分开好?
A:如果这些域名属于同一个项目,统一管理没问题;但出于安全与维护分离的考虑,推荐每个域名一个证书

Q2:是否支持通配符域名?
A:支持,但需要使用 DNS 方式验证。例如:

sudo certbot -d '*.example.com' --manual --preferred-challenges dns certonly

总结

通过 Certbot 管理多个域名的 SSL 证书不仅免费高效,而且配合 Nginx 可实现全自动配置与续期。对于部署多个项目或服务的开发者来说,是一个非常值得掌握的工具。

Leave a Reply

Your email address will not be published. Required fields are marked *