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)