使用 acme 自动获取 letsencrypt证书,并自动更新
标签搜索
侧边栏壁纸
  • 累计撰写 6 篇文章
  • 累计收到 0 条评论

使用 acme 自动获取 letsencrypt证书,并自动更新

Lance
2024-02-29 / 0 评论 / 20 阅读 / 正在检测是否收录...

Let’s Encrypt 是一个免费的,自动化的,开放的证书颁发机构(CA),为公众的利益而运行。 它是一项由 Internet Security Research Group(ISRG)提供的服务。

acme.sh 则是实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。

安装 acme

curl  https://get.acme.sh | sh
source ~/.bashrc

切换默认证书 CA厂家为letsencrypt,否则默认的 CA 厂家是zerossl

acme.sh  --set-default-ca  --server letsencrypt

中国大陆如果无法直接安装,可使用以下方法

git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m my@example.com
source ~/.bashrc

验证是否生效

$ acme.sh -h

https://github.com/acmesh-official/acme.sh

v2.8.6

Usage: acme.sh  command ...[parameters]....

Commands:

--help, -h               Show this help message.

--version, -v            Show version info.

--install                Install acme.sh to your system.

--uninstall              Uninstall acme.sh, and uninstall the cron job.

--upgrade                Upgrade acme.sh to the latest code from https://github.com/acmesh-official/acme.sh.

--issue                  Issue a cert.

--signcsr                Issue a cert from an existing csr.

--deploy                 Deploy the cert to your server.

--install-cert           Install the issued cert to apache/nginx or any other server.

# ......

申请证书

1. 通过http 方式申请证书

只需要指定域名, 并指定域名所在的网站根目录,acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

# 生成 RSA 证书:
acme.sh --issue -d 你的域名 -w 你的网站目录
# 生成 ECC 证书:
acme.sh --issue -d 你的域名 -w 你的网站目录 --keylength ec-256

如果没有安装 web 服务器,acme.sh 也自带一个建议的web服务用于证书申请,前提是需要安装 socat ,80端口没有被占用。使用方法:

acme.sh --issue -d blog.exsvc.cn --standalone

2. 通过DNS 验证方式申请证书

这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证,而且可申请泛域名证书。坏处是,需要配合DNS解析服务商的API使用,否则 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

目前支持 DNSPod、CloudXNS、Aliyun、jdcloud、 CloudFlare、 GoDaddy、 Azure、AWS 等国内外大多数主流DNS服务提供商。详细清单详见: https://github.com/Neilpang/acme.sh/wiki/dnsapi

  • DNSPod 申请方式
export DP_Id="你的 ID"
export DP_Key="你的 key"
  • 申请证书
acme.sh --issue --dns dns_dp -d 你的域名 --nginx

--nginx 表示生成 nginx 格式的证书

安装证书

acme.sh --install-cert -d 你的域名 --key-file 证书存放目录/你的域名.key  --fullchain-file 证书存放目录/你的域名.crt --reloadcmd "service nginx force-reload"

--reloadcmd 参数用于让web服务器重新加载新的证书文件,例子中使用的是 nginx 服务器,您也可以定义成其它服务器

查看安装的证书

$ acme.sh --list

Main_Domain                KeyLength  SAN_Domains  CA               Created               Renew
你的域名  "ec-256"   no           LetsEncrypt.org  2024-02-29T07:49:13Z  2024-04-28T07:49:13Z

Let’s Encrypt 的证书有效期为3个月,每3个月得重新申请证书。通过 acme.sh 可以自动管理SSL证书的申请。通过上面步骤的安装后 acme.sh 会定期自动更新SSL证书。crontab 中会自动生成一个任务

$ crontab -l
21 6 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

手动更新方式

acme.sh --renew -d 你的域名 --force
0

评论 (0)

取消