549 字
3 分钟
使用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=your@email.comacme.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.confLe_Domain=blog.freelytomorrow.comLe_Alt=noLe_Webroot=nginx:Le_PreHook=Le_PostHook=Le_RenewHook=Le_API=https://acme.zerossl.com/v2/DV90Le_Keylength=ec-256Le_OrderFinalize=https://acme.zerossl.com/v2/DV90/order/k8qN5WvqYzX8Qij4jrQPPg/finalizeLe_LinkOrder=https://acme.zerossl.com/v2/DV90/order/k8qN5WvqYzX8Qij4jrQPPgLe_LinkCert=https://acme.zerossl.com/v2/DV90/cert/eNi3DeDNOfAuC8QqbKtI2ALe_CertCreateTime=1695256995Le_CertCreateTimeStr=2023-09-21T00:43:15ZLe_NextRenewTimeStr=2023-11-19T00:43:15ZLe_NextRenewTime=1700354595Le_RealCertPath=Le_RealCACertPath=Le_RealKeyPath=/etc/nginx/blog.cert/key.pemLe_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 -l27 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支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
使用ACME.SH进行免费且自动化的DV证书续订
https://white-festa.net/posts/acme/ 最后更新于 2024-02-23,距今已过 669 天
部分内容可能已过时