使用 acme.sh 自动生成和更新证书

一、安装 acme.sh

官方标准安装通过github,国内你懂的请使用gitee的仓库
https://github.com/acmesh-official/acme.sh/wiki/Install-in-China

git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@email.com

普通用户和root用户都是可以安装使用的,安装脚本进行了一下几步:

1、把 acme.sh 安装到了当前用户的 home 目录下 ~/.acme.sh/
并创建了一个shell的alias,如.bashrc ,方便在shell中的使用

2、创建了一个cron,每天自动检测所有证书,快过期了就会自动更新证书,如下:
4 0 * * * “/root/.acme.sh”/acme.sh –cron –home “/root/.acme.sh” > /dev/null

安装完成后手动执行 source ~/.bashrc,你可以在安装目录 ~/.acme.sh/ 中找到所有文件。

二、通过 aliyun domain API 验证并证书

acme.sh支持100多个域名服务商的域名验证,包括阿里云 dns api接口,我的域名目正在阿里云。
注意:acme.sh 默认的CA是 ZeroSSL,可以通过颁发的证书详情查看到,如果需要更换其他的CA请查看官方文档。

使用阿里云dns接口认证域名并申请签发证书,将阿里云accesskey配置到环境变量
export Ali_Key=’xxxxx’
export Ali_Secret=’xxxxx’

也可以直接添加到 ~/.acme.sh/account.conf 文件中
Ali_Key=’xxxxx’
Ali_Secret=’xxxxx’

验证和生成证书:
acme.sh –issue –dns dns_ali -d xxx.mydomain.com

证书将生成到应用目录中的域名命名的目录下

三、安装证书到nginx中

证书生成好后,我们要把证书复制给对应的apache、nginx等服务中使用。需要使用 –install-cert 把证书复制到目标文件,请勿直接使用 ~/.acme.sh/ 目录下的证书文件,因为这里的文件都是内部使用,也许会有变化。

acme.sh --install-cert -d xxx.mydomain.com \
--key-file /usr/local/openresty/nginx/conf/cert/xxx.mydomain.com.key \
--fullchain-file /usr/local/openresty/nginx/conf/cert/xxx.mydomain.com.pem \
--reloadcmd "service openresty reload"

注意 apache 和 nginx 的证书文件是不一样的。

四、自动更新证书

查看已安装的证书信息:
acme.sh –info -d qds.ywl100.com

输出内容如下:

# acme.sh --info -d xxx.mydomain.com
DOMAIN_CONF=/root/.acme.sh/xxx.mydomain.com/xxx.mydomain.com.conf
Le_Domain=xxx.mydomain.com
Le_Alt=no
Le_Webroot=dns_ali,/usr/local/openresty/nginx/conf/cert/
Le_PreHook=
Le_PostHook=
Le_RenewHook=
Le_API=https://acme.zerossl.com/v2/DV90
Le_Keylength=2048
Le_OrderFinalize=https://acme.zerossl.com/v2/DV90/order/UT3kHk8rpV2hVaBdHcxWSA/finalize
Le_LinkOrder=https://acme.zerossl.com/v2/DV90/order/UT3kHk8rpV2hVaBdHcxWSA
Le_LinkCert=https://acme.zerossl.com/v2/DV90/cert/FUTOlC3KbSIbcbMtZIgkBQ
Le_CertCreateTime=1733380696
Le_CertCreateTimeStr=2024-12-05T06:38:16Z
Le_NextRenewTimeStr=2025-02-03T06:38:16Z
Le_NextRenewTime=1738478296
Le_RealCertPath=
Le_RealCACertPath=
Le_RealKeyPath=/usr/local/openresty/nginx/conf/cert/xxx.mydomain.com.key
Le_ReloadCmd=service openresty reload
Le_RealFullChainPath=/usr/local/openresty/nginx/conf/cert/xxx.mydomain.com.pem

注意:可以看到默认情况下,证书每60天会自动更新一次,随后会通过reloadcmd重启服务。
你无需任何操作

这个更新证书的默认天数也可以自定义:
acme.sh –issue –days 30 -d xxx.mydomain.com

也可以强制续签证书:
acme.sh –renew -d xxx.mydomain.com –force

over.

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇