选择背景
acme.sh 虽然有效期只有3个月 但是 免费&自动续期,有人也推荐certd但是配置视乎麻烦一些
官方仓库及文档:https://github.com/acmesh-official/acme.sh
实现
进入acme.sh=>> github下面 查看官方文档,发现可以通过网络请求直接下载 curl https://get.acme.sh | sh -s email=my@example.com
但是实际服务器运行 会卡在 下载,我的服务器访问不了外网
我处于好奇手动复制了https://get.acme.sh用电脑进行访问
结果出现了一段提示 里面重要的部分是 这段 echo "中国大陆用户请参考:" echo "https://github.com/acmesh-official/acme.sh/wiki/Install-in-China"

根据提示我们继续访问
看clone,其实acme已经在中国申请了自己的仓库,所以如果你的服务器访问外网慢 可以使用这种办法
第一步用国内的gitee拉去
git clone https://gitee.com/neilpang/acme.sh.git
第二步 cd 进入到你acme.sh文件按照的位置
cd acme.sh
第三步 配置我们的邮箱方便acme发送邮箱提醒(-m 后面接你的邮箱)
./acme.sh --install -m my@example.com
这里我们就按照他的命令 通过gitee 直接国内访问 执行后我这里提示了
Good, bash is found, so change the shebang to use bash as preferred.[Mon Aug 4 11:39:34 AM CST 2025] OK
通过 acme.sh --list 可以看你申请列表 应该有一个
颁发证书
现在我们的acme.sh脚步已经配置好了
将我们的域名注册进acme颁发的服务器
ps: 因为刚刚已经按装好了所以服务器可以全局使用acme.sh开头的命令
acme.sh --issue -d lhstudy.cn -d www.lhstudy.cn -w /var/www/html
解释这行命令
acme.sh 固定起手
--issue 顾名思义 发行方也就是指acme官网(因为我们要他们的颁发证书来Https访问,所以就需要注册他们服务)
-d 就是domain 域名 这里-d是可以写多个的,如果是个人用你有其他域名可以只申请一个证书,只需要-d 后面多接几个你的域名
-w 网站根目录 我配置的是nginx 在default配置文件中可以看到 root 后面的配置

颁发结果
他会在我们目录下面生成密钥和证书

之后官网的建议是把密钥和证书移动到nginx配置文件下面,因为他觉得直接引用密钥是不安全的

acme.sh --install-cert -d lhstudy.cn \
--key-file /etc/nginx/ssl/lhstudy.cn.key \
--fullchain-file /etc/nginx/ssl/lhstudy.cn.crt \
--reloadcmd "systemctl reload nginx"
1. 这里我是为了方便管理在nginx下 创建了一个ssl目录 mkdir ssl 即可 (所以为什么是 /etc/nginx/ssl)
2. --key-file 复制密钥
3. --fulllchain-file 复制证书 nginx要的是crt 所以要把我们的 cer转成crt
4. 重启nginx
这里绿色表示启动成功了
配置Nginx
在nginx配置文件中 配置好刚刚在ssl中申请的

自动续签
默认他会在我们服务器创建一个定时任务
通过 crontab -l 可以查看 如果要编辑定时任务就是-enginx上面图片也配置了一个转发
因为acme续签会通过这个.well-known/acme-challenge路径下找证书
ps: 第一次做是通过docker容器部署nginx需要挂载 导致稀里糊涂成功了,这一次相对于又装了一边,明白了nginx除了需要root配置根目录外,https证书也需要单独配置就是说,docker容器挂载一个是网站根目录 另一个就是ssl