背景介绍

在 SSL/TLS 证书领域,非 ECC(椭圆曲线加密)证书和 ECC 证书各有优劣。非 ECC 证书通常基于 RSA 算法,兼容性更广,适合老旧系统或需要广泛支持的场景;而 ECC 证书虽然安全性更高且性能更好,但部分旧设备可能不支持。对于大多数开发者而言,非 ECC 证书仍然是更稳妥的选择。

证书类型对比

环境准备

acme.sh 是一个轻量级的 ACME 协议客户端,支持自动化证书管理。以下是环境准备步骤:

  1. 系统要求:Linux/Unix 系统(包括 macOS),支持 Bash 环境。
  2. 依赖项安装:确保已安装 curlopenssl

安装 acme.sh:

curl https://get.acme.sh | sh -s email=my@example.com
  • 安装完成后,重新加载 Bash 配置:source ~/.bashrc

核心流程

1. 证书申请

acme.sh 支持多种验证方式,包括 HTTP 和 DNS。以下是 HTTP 验证的示例:

acme.sh --issue -d example.com -d www.example.com -w /var/www/html
  • -d:指定域名,支持多域名。
  • -w:指定 Web 根目录,acme.sh 会在此目录下创建验证文件。

2. 证书获取

证书生成后,默认存储在 ~/.acme.sh/example.com/ 目录下。可以通过以下命令查看证书文件:

ls ~/.acme.sh/example.com/

3. 证书安装

将证书安装到目标目录(如 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 "service nginx force-reload"
  • --key-file:私钥文件路径。
  • --fullchain-file:证书链文件路径。
  • --reloadcmd:证书更新后执行的命令(如重启 Nginx)。

自动化部署

acme.sh 默认会设置自动续期任务。可以通过以下命令查看定时任务:

crontab -l | grep acme.sh

如果需要手动测试续期:

acme.sh --renew -d example.com --force

避坑指南

常见错误及解决方案

  1. 验证失败:确保域名解析正确,且 HTTP 验证时 Web 服务器可访问。
  2. 权限问题:确保 acme.sh 有权限写入目标目录。
  3. 证书未更新:检查定时任务是否正常执行。

安全考量

  1. 密钥保护:私钥文件应设置为只读权限(如 chmod 400)。
  2. 证书轮换:定期更新证书(acme.sh 默认每 60 天续期一次)。
  3. 日志监控:定期检查 acme.sh 的日志文件(~/.acme.sh/acme.sh.log)。

自动化部署流程

总结

通过 acme.sh 生成非 ECC 证书不仅高效,还能通过自动化续期减少运维负担。本文详细介绍了从环境准备到自动化部署的全流程,并提供了常见问题的解决方案。希望这些内容能帮助你在实际项目中快速上手。

如果你有更多问题,欢迎在评论区交流!

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐