ACME自动申请证书
使用ACME手动申请证书
安装并启用acme.sh脚本
apt install -y curl && curl https://get.acme.sh | sh && source .bashrc切换证书签发机构
acme.sh --set-default-ca --server letsencrypt3.签发证书
acme.sh --issue -d 域名 --standalone4.安装证书
认生成的证书都放在安装目录下: ~/.acme.sh/,但是不要在web服务器中直接引用目录下的证书文件,也不要手动来拷贝证书文件到具体的web服务器中,手动拷贝会导致之后更新证书流程不能完全自动。 正确方式是使用acme.sh的安装证书命令,acme.sh自动拷贝证书文件到具体目录中,拷贝命令会被记录下来,之后自动更新证书流程也会执行此拷贝步骤,从而实现更新证书流程的完全自动化。 格式例子如下: acme.sh --install-cert -d xxx \ --cert-file xxx \ --key-file xxx \ --fullchain-file xxx\ --reloadcmd xxx 根据web服务器需要的文件按需引入对应的参数,reloadcmd定义证书更新后重启对应的web服务命令。 以nginx为例: acme.sh --install-cert -d www.a.com -d img.a.com \ --key-file /etc/nginx/cert_file/key.pem \ --fullchain-file /etc/nginx/cert_file/fullchain.pem \ --reloadcmd "service nginx force-reload"证书类型说明:
--cert-file
- cert.pem 服务端证书
--key-file
- privkey.pem 证书的私钥
--ca-file
- ca.pem 数字证书
--fullchain-file
- fullchain.pem 包括了 cert.pem 和 chain.pem 的内容
- chain.pem 浏览器需要的所有证书,比如根证书和中间证书,但不包括服务端证书
通过上一步安装证书,已经把证书拷贝到目标的目录,接下来就是在web服务中使用证书即可。
以nginx为例:
...
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert_file/fullchain.pem;
ssl_certificate_key /etc/nginx/cert_file/key.pem;
# ...
}
开启acme.sh自动升级
acme.sh --upgrade --auto-upgrade设置证书自动更新
crontab -e
#填入自动执行的命令:每月1日凌晨1点重新安装证书
0 1 1 * * acme.sh --install-cert -d 域名 --key-file 密钥存放路径和名字 --fullchain-file 证书存放路径就和名字