Let's Encrypt 证书免费,对于我这种穷得很的学生党来说无疑是最佳的选择,虽然每次只有 90 天的有效期,但可以通过脚本定期更新,配好之后一劳永逸,何不为之?
安装 acme.sh
一行命令,简单的很:
# 使用curl
curl https://get.acme.sh | sh
# 或者wget
wget -O - https://get.acme.sh | sh
然后重新载入一下bashrc:
source ~/.bashrc
现在你就能使用 acme.sh 获取命令帮助。
若不能使用,可手动添加:
echo '. "/root/.acme.sh/acme.sh.env"' >> ~/.bashrc
申请 SSL 证书
基本命令如下:
acme.sh --issue -d www.example.com -w /data/web/example/
解释:为域名 www.example.com 申请RSA证书,使用文件验证,站点目录为 /data/web/example/
欲使用ECC证书,可在尾部添加 --keylength ec-256,例如:
acme.sh --issue -d www.example.com -w /data/web/example/ --keylength ec-256
同时也可以申请多个域名&泛解析:
acme.sh --issue -d example.com -d *.example.com -d example2.com -w /data/web/example/
使用 DNS API 验证
如果不喜欢使用文件的验证方式,可以使用域名解析商的API,这里以dnspod为例:
- 到dnspod账号中心获取密钥
- 配置环境变量:
export DP_Id="this is your id" export DP_Key="this is your token"注意替换自己的 DNSPod API Key 和 ID
- 执行命令:
acme.sh --dns dns_dp --issue -d www.example.com
安装证书
证书默认保存在 ~/.acme.sh/,建议不要直接使用此目录下的文件。
正确的使用方法是使用 --installcert 命令,并指定目标位置,然后证书文件会被 copy 到相应的位置,例如:
acme.sh --installcert -d example.com \
--cert-file /data/cert/example.com/chain.pem \
--key-file /data/cert/example.com/privkey.pem \
--fullchain-file /data/cert/example.com/fullchain.pem \
--reloadcmd "service nginx restart"
更新证书
这里指定的所有参数都会被自动记录下来,以便在60天后被自动更新调用,你无需任何操作。