部署acme.sh,申请免费SSL证书
acme.sh部署
安装acme.sh,email改成自己的
1 | curl https://get.acme.sh | sh -s email=my@example.com |
安装完成后尝试输入acme.sh
检查命令是否有效
显示找不到该命令,再执行一次以下命令,创建 一个 shell 的 alias。
1 | alias acme.sh=~/.acme.sh/acme.sh |
再尝试输入acme.sh -v
检查命令是否有效
到此acme.sh已部署OK了
证书申请
使用域名解析商提供的 api 自动添加 txt 记录完成域名验证
以 dnspod 为例, 你需要先登录到 dnspod 账号, 生成你的 api id 和 api key, 都是免费的. 然后:
1 | export DP_Id="1234" |
可以切换为CA证书
1 | acme.sh --set-default-ca --server Let's Encrypt |
生成证书,支持泛域名或多域名证书申请
1 | acme.sh --issue --dns dns_dp -d *.aa.com -d www.aa.com |
copy/安装 证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/
, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如在Nginx:
1 | acme.sh --install-cert -d example.com \ |
更新证书
目前证书在 60 天以后会自动更新, 你无需任何操作
请确保 cronjob 正确安装, 看起来是类似这样的:
1 | crontab -l |
查看已安装证书信息
1 | acme.sh --info -d example.com |
一键部署
一键脚本
1 | wget -N --no-check-certificate https://raw.githubusercontents.com/354770288/acme-1key/master/acme1key.sh && bash acme1key.sh |