当前位置: 首页 > 工具软件 > acme.sh > 使用案例 >

使用 acme.sh 免费申请泛域名证书和自动续约

阎功
2023-12-01

概述

acme.sh 实现了 acme 协议,可以帮助你快速申请 SSL 证书,自动更新证书等操作。

服务部署

这里使用 docker compose 来管理,docker-compose.yml 如下

# docker-compose.yml
services:
  acme.sh:
    image: neilpang/acme.sh
    container_name: acme.sh
    restart: always
    command: daemon
    volumes:
      - ./data:/acme.sh
    environment:
      TZ: Asia/Shanghai
      DP_Id: ******
      DP_Key: ******

执行命令

# 更新acme.sh
docker compose pull
# 部署
docker compose up -d

::: tip
这里使用的解析商是 DNSPod,其他的解析商可以参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi
:::

使用教程

证书生成

由于使用的是 DNS 验证的方式, 就是在域名上添加一条 TXT 解析记录, 以此来验证域名所有权。

acme.sh 便利的地方在于,可以使用域名解析商提供的 api 来自动添加 TXT 记录完成验证,并且在验证成功后自动删除记录。

执行命令,需要把 naomi.plus 替换成自己的域名,如果是其他解析商还要修改 dns_dp参考值

docker compose exec acme.sh --issue --dns dns_dp -d naomi.plus -d *.naomi.plus

证书安装

执行命令,需要把 key-filefullchain-file 的参数值替换成自己的。

docker compose exec acme.sh --install-cert -d naomi.plus --key-file /acme.sh/file/naomi.plus.key --fullchain-file /acme.sh/file/naomi.plus.crt

::: warning
默认生成的证书都放在宿主机当前目录下的文件夹 data, 请不要直接使用此目录下的文件,这里面的文件都是内部使用,而且目录结构可能会变化。

正确的使用方法是使用 --install-cert 参数, 并指定目标位置, 然后证书文件会被复制到相应的位置。
:::

证书更新

acme.sh 申请的证书大概在 60-90 天之间,根据所使用的 CA 机构而定

每天凌晨会检查所有证书,如果证书需要更新则会自动更新证书。

强制手动更新可以执行命令,需要把 naomi.plus 替换成自己的域名。

docker compose exec acme.sh --renew -d naomi.plus --force

证书吊销

执行命令,需要把 naomi.plus 替换成自己的域名

docker compose exec acme.sh --revoke -d naomi.plus
docker compose exec acme.sh --remove -d naomi.plus

证书管理脚本

这里写了一个简单的脚本来配置证书,需要把 naomi.plus 替换成自己的域名

#!/bin/bash

# run.sh
echo "naomi.plus证书管理 输入选择:"
echo "1:查看证书"
echo "2:安装证书"
echo "3:更新证书(强制)"
read input

if [ $input -eq 1 ]; then
    docker compose exec acme.sh --info -d naomi.plus
elif [ $input -eq 2 ]; then
    docker compose exec acme.sh --install-cert -d naomi.plus --key-file /acme.sh/file/naomi.plus.key --fullchain-file /acme.sh/file/naomi.plus.crt
elif [ $input -eq 3 ]; then
    docker compose exec acme.sh --renew -d naomi.plus --force
fi
 类似资料: