多CA证书共存:acme.sh管理不同CA签发的SSL证书
【免费下载链接】acme.sh 项目地址: https://gitcode.com/gh_mirrors/acm/acme.sh
你是否遇到过需要在同一台服务器上使用不同证书颁发机构(CA, Certificate Authority)签发证书的情况?比如某些旧系统需要Let's Encrypt的证书,而新服务又要求使用ZeroSSL的证书。手动管理多个CA的证书申请、续期和部署不仅繁琐,还容易出错。本文将介绍如何使用acme.sh工具轻松实现多CA证书的共存管理,让你一文掌握多CA环境下的SSL证书全生命周期管理。
读完本文后,你将能够:
- 了解acme.sh支持的主流CA及其特点
- 学会如何为不同域名指定不同的CA签发证书
- 掌握多CA证书的申请、续期和部署方法
- 了解如何查看和管理已有的多CA证书
支持的证书颁发机构(CA)
acme.sh作为一款功能强大的ACME协议客户端,支持多种主流的证书颁发机构。根据README.md中的说明,目前acme.sh支持的CA包括:
- ZeroSSL.com CA(默认)
- Letsencrypt.org CA
- BuyPass.com CA
- SSL.com CA
- Google.com Public CA
- 任何符合RFC8555标准的ACME协议CA
这些CA各有特点,例如Let's Encrypt以免费、自动化著称,而SSL.com则提供更多企业级功能。在实际应用中,你可能需要根据不同业务场景选择合适的CA。
多CA证书管理的基本原理
acme.sh通过以下机制实现多CA证书的共存管理:
- 使用
--server参数指定CA服务器 - 为不同CA的证书创建独立的配置和存储目录
- 支持在续期时自动使用原CA
这种设计使得多个CA的证书可以在同一系统中共存,互不干扰。
为不同域名指定不同CA
1. 使用默认CA(ZeroSSL)签发证书
acme.sh默认使用ZeroSSL作为CA。要使用默认CA为域名example.com签发证书,可以执行:
acme.sh --issue -d example.com -w /var/www/example.com
2. 指定Let's Encrypt签发证书
要使用Let's Encrypt为域名example.net签发证书,可以使用--server参数指定CA:
acme.sh --issue -d example.net -w /var/www/example.net --server letsencrypt
3. 使用SSL.com签发ECC证书
对于需要更高安全性的场景,可以使用SSL.com签发ECC证书:
acme.sh --issue -d example.org -w /var/www/example.org --server sslcom --keylength ec-256
多CA证书的续期与管理
自动续期
acme.sh会自动为所有证书设置续期任务,续期时会使用证书初始签发时的CA。你可以通过以下命令查看自动续期任务:
crontab -l | grep acme.sh
手动续期指定CA的证书
如果需要手动续期特定CA的证书,可以指定域名和CA:
acme.sh --renew -d example.net --server letsencrypt --force
查看已安装的证书及其CA
要查看系统中已安装的所有证书及其对应的CA,可以使用以下命令:
acme.sh --list
该命令会列出所有已签发的证书,包括域名、CA、到期时间等信息。
多CA证书的部署示例
以Nginx服务器为例,假设我们已经使用ZeroSSL和Let's Encrypt分别为example.com和example.net签发了证书,可以通过以下步骤部署:
1. 部署ZeroSSL证书到Nginx
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "systemctl reload nginx"
2. 部署Let's Encrypt证书到Nginx
acme.sh --install-cert -d example.net \
--key-file /etc/nginx/ssl/example.net.key \
--fullchain-file /etc/nginx/ssl/example.net.crt \
--reloadcmd "systemctl reload nginx"
3. 配置Nginx虚拟主机
编辑Nginx配置文件,为不同域名指定对应的证书:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# 其他配置...
}
server {
listen 443 ssl;
server_name example.net;
ssl_certificate /etc/nginx/ssl/example.net.crt;
ssl_certificate_key /etc/nginx/ssl/example.net.key;
# 其他配置...
}
多CA共存的注意事项
-
证书存储路径:acme.sh会为不同CA的证书创建不同的存储目录,通常位于
~/.acme.sh/下以域名命名的子目录中。 -
CA切换:如果需要将域名从一个CA切换到另一个CA,需要先使用
--remove命令删除原证书,然后使用新CA重新签发。 -
通知配置:可以通过notify/目录下的脚本配置证书续期通知,确保及时了解证书状态。
-
部署脚本:acme.sh提供了多种部署脚本,可以在deploy/目录下找到,包括Apache、Nginx等服务器的部署脚本。
总结
通过acme.sh的多CA支持,我们可以轻松管理来自不同证书颁发机构的SSL证书。无论是为不同域名选择不同CA,还是为特定业务场景选择最合适的证书类型,acme.sh都提供了灵活而强大的支持。
主要优势包括:
- 无需手动管理多个CA客户端
- 统一的证书申请、续期和部署流程
- 支持多种证书类型和验证方式
- 完善的通知机制
如果你正在管理多CA环境下的SSL证书,不妨尝试使用acme.sh,体验自动化证书管理带来的便利。
参考资料
【免费下载链接】acme.sh 项目地址: https://gitcode.com/gh_mirrors/acm/acme.sh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



