使用acme.sh申请Let's Encrypt证书

2017年9月26日 3562点热度 0人点赞 0条评论


acme.sh 项目地址:
https://github.com/acmesh-official/acme.sh
有中文说明很详细。本文只给出配合解析商 API 申请泛域名证书的过程教程:

一、安装acme.sh


安装过程不会污染已有的系统任何功能和文件

curl  https://get.acme.sh | sh

安装完成后的目录在~/.acme.sh/.
使用命令:

cd /root/.acme.sh

进入.acme.sh目录。

二、生成SSL证书


acme.sh 实现了 acme 协议支持的所有验证协议.另外还支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的 API,可以自动添加 TXT 记录来验证,不需要人工操作,十分便捷。
这里以 dnspod 为例,首先登录 dnspod,生成你的 api id 和 api key,记下他们,然后依次输入

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
~/.acme.sh/acme.sh   --issue   --dns dns_dp   -d example.com  -d *.example.com

以上代码中将 api idapi key换成dnspod网站上生成的值,example.com换成你自己的域名,dns_dp参数表示使用dnspod的 API,其他解析商的环境变量名是不一样的,详情去这里看
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

证书就会自动生成了,申请完成后屏显会输出证书路径。这里给出的 api id 和 api key 会被自动记录下来, 将来你在使用 dnspod api 的时候, 就不需要再次指定了. 直接输入生成就好了:

acme.sh   --issue   --dns dns_dp   -d example.com  -d *.example.com

三、copy/安装 证书


前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

cme.sh  --installcert  -d  <domain>.com   \
        --key-file   /etc/nginx/ssl/<domain>.key \
        --fullchain-file /etc/nginx/ssl/fullchain.cer \
        --reloadcmd  "service nginx force-reload"

这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用。

四、 更新证书


目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

五、更新 acme.sh


目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

信仰飘扬

行尽天涯 静默山水间