发布于 

部署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
2
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

可以切换为CA证书

1
2
acme.sh --set-default-ca --server Let's Encrypt
acme.sh --set-default-ca --server ZeroSSL

生成证书,支持泛域名或多域名证书申请

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
2
3
4
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/key.pem \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd "service nginx force-reload"

更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作

请确保 cronjob 正确安装, 看起来是类似这样的:

1
crontab  -l

查看已安装证书信息

1
acme.sh --info -d example.com

一键部署

Github项目地址

一键脚本

1
wget -N --no-check-certificate https://raw.githubusercontents.com/354770288/acme-1key/master/acme1key.sh && bash acme1key.sh

参考链接

说明 · acmesh-official/acme.sh Wiki (github.com)