你的网站在“luo奔”(http协议)还是购买的ssl证书呢,其实使用脚本就可以申请ssl证书并且自动续期。
下面分享我申请ssl证书折腾的过程及执行过程中遇到的坑,收藏留用吧。
官网最新已经有提供CertGo客户端,如果你不需要折腾脚本可以使用可视化操作(如果你更喜欢用脚本就选acme.sh)。
- CertGo:桌面端,体验沉浸式、可视化的证书管理
- acme.sh:纯 Shell 脚本编写的客户端,零依赖,轻量级且功能极其强大。
配置 DNS 服务商
以 aliyun 服务商为例(具体以您的域名服务商为准)。
https://ram.console.aliyun.com/users/create
配置访问凭证,记录生成AccessKey ID、AccessKey Secret(后面会用到)。

登录 FreeSSL
https://freessl.cn 注册/登录。
添加 ACME 账号
新增 EAB -> 起个标签名 --> 记录生成 EAB KID、EAB HMAC KEY(后面会用到)。
可视化(CertGo 桌面端)
唤起客户端
下载安装客户端。

配置 DNS 供应商
API 凭证输入 aliyun 申请的凭证信息。

配置自动化证书
基础配置(添加域名)
- 可以多个域名公用一个证书,添加多个域名即可。
- 如果你申请的是
*通用域名,最好再申请一个单域名,例如:申请*.bugshare.cn时多申请一个bugshare.cn,这样访问https://bugshare.cn也能通。
集成设置(选择供应商)
- 选择之前配置的 DNS 供应商,这样会在 DNS 记录中自动写入 TXT 记录。
- 如果申请过程中出现DNS错误,一般是DNS解析问题,可以通过https://dnschecker.org检查或联系DNS供应商(有时候可能48小时内生效)。
部署配置(复制证书)
- 证书路径以你服务器存放实际路径(例如以nginx配置的路径为准),
- 复制后可以执行命令,例如:重启nginx
nginx -s reload,我的nginx放在docker,那么配置的是docker restart nginx。
部署 CertGo Agent(Linux服务器自动续期)
- 下载配置文件,一键复制配置命令
- 安装 CertGo Agent
curl -sSL https://certgo.trustasia.com/install.sh | sudo bash - 上传配置并首次运行,将配置文件上传到 ~/.certgo/configs/ 目录后,执行
certgo reload

Shell 脚本(acme.sh)
安装 acme.sh
首先在服务器上安装 ACME 客户端。
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
# 终端执行
curl https://get.acme.sh | sh -s email=你的FreeSSL账号邮箱
# 国内环境:
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m 你的FreeSSL账号邮箱
配置 DNS 服务商
导入 DNS 提供商的 API 凭证以实现自动验证(前面有申请)。
export Ali_Key="您的阿里云Key"
export Ali_Secret="您的阿里云Secret"
绑定 ACME 账户(首次运行)
使用 EAB 凭证绑定您的 ACME 账户(前面有申请)。
./acme.sh --insecure --register-account --server https://acme.litessl.com/acme/v2/directory \
--eab-kid 您的EAB KID \
--eab-hmac-key 您的EAB HMAC KEY
申请证书
执行命令以验证域名所有权并签发证书。
- 可以多个域名公用一个证书,添加多个域名即可。
- 如果你申请的是
*通用域名,最好再申请一个单域名,例如:申请*.bugshare.cn时多申请一个bugshare.cn,这样访问https://bugshare.cn也能通。 - 如果申请过程中出现DNS错误,一般是DNS解析问题,可以通过https://dnschecker.org检查或联系DNS供应商(有时候可能48小时内生效)。
./acme.sh --insecure --issue --server https://acme.litessl.com/acme/v2/directory \
--dns dns_ali \
--dnssleep 300 \
-d "bugshare.cn" \
-d "*.bugshare.cn" \
-d "bugfix.wiki" \
-d "*.bugfix.wiki" \
--keylength ec-256
部署证书 (示例)
选择您的 Web 服务器类型,将证书安装到指定路径并配置服务重载。
- 之前申请的所有域名都是写上
- 证书路径以你服务器存放实际路径(例如以nginx配置的路径为准),
- 复制后可以执行命令,例如:重启nginx
nginx -s reload,我的nginx放在docker,那么配置的是docker restart nginx。
./acme.sh --install-cert \
-d "bugshare.cn" \
-d "*.bugshare.cn" \
-d "bugfix.wiki" \
-d "*.bugfix.wiki" \
--key-file /home/data/nginx/conf.d/cert/bugshare.cn.key \
--fullchain-file /home/data/nginx/conf.d/cert/bugshare.cn.pem \
--reloadcmd "docker restart nginx"
自动续期
acme.sh 会自动创建 Cron 任务,无需额外操作。
# 查看定时任务
crontab -l | grep acme.sh
强制续签证书
目前证书每 30 天自动更新,你无需任何操作。
但是你也可以强制续签证书:
./acme.sh --renew -d "bugshare.cn" -d "*.bugshare.cn" -d "bugfix.wiki" -d "*.bugfix.wiki" --force
查看已安装证书信息
./acme.sh --info -d "bugshare.cn" -d "*.bugshare.cn" -d "bugfix.wiki" -d "*.bugfix.wiki"
更新 acme.sh
升级 acme.sh 到最新版:
./acme.sh --upgrade
如果你不想手动升级,可以开启自动升级:
./acme.sh --upgrade --auto-upgrade
之后,acme.sh 就会自动保持更新了。
你也可以随时关闭自动更新:
./acme.sh --upgrade --auto-upgrade 0

DNS Check
Windows 服务器
如果您用的是Windows Server服务器,可以参考:https://www.win-acme.com