Home 实用工具 通过acme.sh申请免费ssl证书 By FreelyTomorrow Sep 24, 2023 3 min read 通过acme.sh申请免费ssl证书 使用ACME.sh工具申请免费的DV证书 acme.sh是什么 ACME,即自动自动证书管理环境(Automatic Certificate Management Environment),是一个无需人工干预就能自动颁发和更新证书的协议。目前,证书颁发机构Let’s Encrypt通过ACME协议免费提供DV证书。 acme.sh是一个通过shell脚本实现的自动化ssl证书获取工具。 安装acme.sh工具 非常简单,一行代码 curl https://get.acme.sh | sh -s [email protected] acme.sh会自动被安装在~/.acme.sh/目录下;同时还会生成一个acme.sh的alias: alias acme.sh=~/.acme.sh/acme.sh 生成证书 acme.sh支持智能读取nginx和apache配置并完成验证。 # nginx服务器 acme.sh --issue -d mydomain.com --nginx # apache服务器 acme.sh --issue -d mydomain.com --apache 这种方法会自动在你的网站根目录下生成一个文件来验证域名所有权。 安装证书 需要操作用户是root或者sudoer 以nginx为例: acme.sh --install-cert -d example.com \ --key-file /key-file的目标路径/key.pem \ --fullchain-file /fullchain-file的目标路径/cert.pem \ --reloadcmd "service nginx force-reload" 其中 --key-file参数是key.pem要被存放的目标路径,一般都是/etc/nginx目录下,这样我们才能在nginx读取到 --fullchain-file同理 --reloadcmd参数是在执行完安装后要求nginx进行的重载动作 查看已安装的证书信息 acme.sh --info -d 你的域名 [root@blog-187 ~]#acme.sh --info -d blog.freelytomorrow.com [Sun Sep 24 11:01:01 AEST 2023] The domain 'blog.freelytomorrow.com' seems to have a ECC cert already, lets use ecc cert. DOMAIN_CONF=/root/.acme.sh/blog.freelytomorrow.com_ecc/blog.freelytomorrow.com.conf Le_Domain=blog.freelytomorrow.com Le_Alt=no Le_Webroot=nginx: Le_PreHook= Le_PostHook= Le_RenewHook= Le_API=https://acme.zerossl.com/v2/DV90 Le_Keylength=ec-256 Le_OrderFinalize=https://acme.zerossl.com/v2/DV90/order/k8qN5WvqYzX8Qij4jrQPPg/finalize Le_LinkOrder=https://acme.zerossl.com/v2/DV90/order/k8qN5WvqYzX8Qij4jrQPPg Le_LinkCert=https://acme.zerossl.com/v2/DV90/cert/eNi3DeDNOfAuC8QqbKtI2A Le_CertCreateTime=1695256995 Le_CertCreateTimeStr=2023-09-21T00:43:15Z Le_NextRenewTimeStr=2023-11-19T00:43:15Z Le_NextRenewTime=1700354595 Le_RealCertPath= Le_RealCACertPath= Le_RealKeyPath=/etc/nginx/blog.cert/key.pem Le_ReloadCmd= Le_RealFullChainPath=/etc/nginx/blog.cert/cert.pem 配置证书 在nginx的配置文件中 ssl_certificate /etc/nginx/blog.cert/cert.pem; ssl_certificate_key /etc/nginx/blog.cert/key.pem; 这两个参数所指定的路径就是之前安装证书时的那两个参数,也就是--key-file和--fullchain-file的值。 更新证书 acme.sh会自动给你的服务器上生成定时任务,会在一段时间后自动更新,所以无需手动操作。 只需要让你的定时任务看起来像这样: [root@blog-187 ~]#crontab -l 27 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null 停止证书续订 acme.sh --remove -d example.com 证书和秘钥不会被删除,需要你手动删除。 更新acme.sh 更新到最新版 acme.sh --upgrade 自动更新 acme.sh --upgrade --auto-upgrade 关闭自动更新 acme.sh --upgrade --auto-upgrade 0 详细教程:https://github.com/acmesh-official/acme.sh 手动更新证书 2024年2月18号,不知道是什么原因没有进行证书自动续期,尝试使用手动更新证书,命令如下: acme.sh --renew -d your.domin.name --force 第一次手动更新失败了,提示: 💡[error] Acme.sh - Can not renew certificate. Could not get nonce而后使用了 acme.sh --renew -d your.domin.name --force --debug 来尝试去解决错误,然后再次更新证书,成功了。目前出现错误的原因未知。 Read Next By FreelyTomorrow Aug 16, 2024 使用Terraform在Ubuntu中部署KVM虚拟机 使用Terraform部署KVM虚拟机的详细流程 运维技术 Terraform KVM By FreelyTomorrow Jun 11, 2024 MySQL/Redis相关面试题 数据库运维(MySQL和Redis)的面试题总结 运维技术 MySQL Redis By FreelyTomorrow May 9, 2024 事件源模式和传统数据库方法在数据管理上的优劣分析 对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践 云原生 By FreelyTomorrow Apr 24, 2024 关于Metrics_server在自托管环境下无法使用的问题 修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。 Kubernetes
By FreelyTomorrow Aug 16, 2024 使用Terraform在Ubuntu中部署KVM虚拟机 使用Terraform部署KVM虚拟机的详细流程 运维技术 Terraform KVM
By FreelyTomorrow May 9, 2024 事件源模式和传统数据库方法在数据管理上的优劣分析 对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践 云原生
By FreelyTomorrow Apr 24, 2024 关于Metrics_server在自托管环境下无法使用的问题 修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。 Kubernetes
acme.sh是什么
ACME,即自动自动证书管理环境(Automatic Certificate Management Environment),是一个无需人工干预就能自动颁发和更新证书的协议。目前,证书颁发机构Let’s Encrypt通过ACME协议免费提供DV证书。
acme.sh是一个通过shell脚本实现的自动化ssl证书获取工具。
安装acme.sh工具
非常简单,一行代码
acme.sh会自动被安装在~/.acme.sh/目录下;同时还会生成一个acme.sh的alias:
生成证书
acme.sh支持智能读取nginx和apache配置并完成验证。
这种方法会自动在你的网站根目录下生成一个文件来验证域名所有权。
安装证书
需要操作用户是root或者sudoer
以nginx为例:
其中
查看已安装的证书信息
acme.sh --info -d 你的域名
配置证书
在nginx的配置文件中
这两个参数所指定的路径就是之前安装证书时的那两个参数,也就是--key-file和--fullchain-file的值。
更新证书
acme.sh会自动给你的服务器上生成定时任务,会在一段时间后自动更新,所以无需手动操作。
只需要让你的定时任务看起来像这样:
停止证书续订
证书和秘钥不会被删除,需要你手动删除。
更新acme.sh
更新到最新版
自动更新
关闭自动更新
详细教程:https://github.com/acmesh-official/acme.sh
手动更新证书
2024年2月18号,不知道是什么原因没有进行证书自动续期,尝试使用手动更新证书,命令如下:
第一次手动更新失败了,提示:
而后使用了
来尝试去解决错误,然后再次更新证书,成功了。目前出现错误的原因未知。
Read Next
使用Terraform在Ubuntu中部署KVM虚拟机
使用Terraform部署KVM虚拟机的详细流程
MySQL/Redis相关面试题
数据库运维(MySQL和Redis)的面试题总结
事件源模式和传统数据库方法在数据管理上的优劣分析
对事件源模式和传统数据库方法在应用程序性能影响、性能、扩展性和可靠性的分析;以及云原生环境下数据管理的最佳实践
关于Metrics_server在自托管环境下无法使用的问题
修复kubernetes的metrics server在自托管环境下因缺少CA证书而无法运行的问题。