acme.sh
Let's Encrypt是一个证书颁发机构,从它可以申请3个月的泛域名证书
有了证书就可以让我们的网站用上https了
acme.sh是可以从Let's Encrypt申请证书的一个工具,
使用它可以在自动在证书将到期前申请并更换证书,也就相当于永久的了
域名
要申请证书,你需要证明你对域名的实际控制权
有二种方式来验证
- 添加一条特定的DNS解析记录
- 使用域名http方式访问到验证文件
后者没有办法去申请泛域名,只能申请单个域名,因为没有办法验证到所有的子域名
当前我的域名是从阿里云购买的,并且acme.sh支持阿里云
因此可以申请一个泛域名证书
在阿里云中RAM访问控制里创建一个用户acmesh,并且只给该用户修改域名解析所需要的权限AliyunDNSFullAccess
环境变量里加入访问密钥,在.bashrc中加入
export Ali_Key="AccessKeyID的值"
export Ali_Secret="AccessKeySecret的值"
安装acme.sh
curl https://get.acme.sh | sh -s email=你的邮箱
国内的网络,上面的安装很可能会失败,如果上面安装失败,从代码安装
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m 你的邮箱
安装成功后还不可以直接使用acme.sh
需要source ~/.bashrc,或者用户重新登录
申请证书
现在acme.sh命令可以用了,那么
acme.sh --issue --dns dns_ali -d *.你的域名
导出证书
mkdir -p /certs/
acme.sh --install-cert -d *.你的域名 --key-file /certs/key.pem --fullchain-file /certs/cert.pem --reloadcmd "systemctl reload nginx"
自动更新
之前安装成功的时候,系统中被添加了一条定时任务每天执行
上面的安装证书的操作也都会被变成配置记录在域名下
当证书更新成功后就会覆盖之前的证书文件,并且执行配置中记录的reloadcmd使证书生效