多CA证书共存:acme.sh管理不同CA签发的SSL证书

多CA证书共存:acme.sh管理不同CA签发的SSL证书

【免费下载链接】acme.sh 【免费下载链接】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证书的共存管理:

  1. 使用--server参数指定CA服务器
  2. 为不同CA的证书创建独立的配置和存储目录
  3. 支持在续期时自动使用原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共存的注意事项

  1. 证书存储路径:acme.sh会为不同CA的证书创建不同的存储目录,通常位于~/.acme.sh/下以域名命名的子目录中。

  2. CA切换:如果需要将域名从一个CA切换到另一个CA,需要先使用--remove命令删除原证书,然后使用新CA重新签发。

  3. 通知配置:可以通过notify/目录下的脚本配置证书续期通知,确保及时了解证书状态。

  4. 部署脚本:acme.sh提供了多种部署脚本,可以在deploy/目录下找到,包括Apache、Nginx等服务器的部署脚本。

总结

通过acme.sh的多CA支持,我们可以轻松管理来自不同证书颁发机构的SSL证书。无论是为不同域名选择不同CA,还是为特定业务场景选择最合适的证书类型,acme.sh都提供了灵活而强大的支持。

主要优势包括:

  • 无需手动管理多个CA客户端
  • 统一的证书申请、续期和部署流程
  • 支持多种证书类型和验证方式
  • 完善的通知机制

如果你正在管理多CA环境下的SSL证书,不妨尝试使用acme.sh,体验自动化证书管理带来的便利。

参考资料

【免费下载链接】acme.sh 【免费下载链接】acme.sh 项目地址: https://gitcode.com/gh_mirrors/acm/acme.sh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值