当前位置: 首页 > 网站建设 > 使用acme.sh脚本申请Let’s Encrypt 泛域名SSL证书

使用acme.sh脚本申请Let’s Encrypt 泛域名SSL证书

发布于:2018-3-19 最后更新:2018-6-17 网站建设 2条评论 14,651 views
本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme

Let's Encrypt是一个于2015年推出的数字证书认证机构,一直以来提供免费的SSL证书服务,直到今天我们期待已久的Let's Encrypt 泛域名SSL证书来了,使用acme.sh可以很方便的完成申请。

acme.sh 实现了 acme 协议,是一个开源的Let's Encrypt SSL申请工具,操作和流程比官方的申请方式简化很多,推荐大家使用。

安装acme.sh

以下命令请在Linux系统执行,root和普通用户均可安装。

#安装
curl  https://get.acme.sh | sh
#让alias生效
source ~/.bashrc

设置DNS API

目前泛域名证书仅支持DNS验证,acme.sh通过DNS提供商的API自动完成操作,因此需要先设置DNS API,以CloudXNS为例。

在CloudXNS后台 - 用户中心 - API管理可以看到API KEY/SECRET KEY,如果没有请自行创建并记录下来。

输入下面的命令导入密钥(CloudXNS),注意不同的DNS,导入的参数不一样,具体您可以参考:dnsapi

export CX_Key="1234"
export CX_Secret="sADDsdasdgdsf"
  • CX_Key:对应CloudXNS API KEY
  • CX_Secret:对应CloudXNS SECRET KEY

其它常用DNS API设置

CloudFlare

#导入密钥
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="xxxx@sss.com"
#申请证书
acme.sh --issue --dns dns_cf -d example.com -d www.example.com

腾讯/DNSPod(国内版)

#导入密钥
export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"
#申请证书
acme.sh --issue --dns dns_dp -d example.com -d www.example.com

阿里云

#导入密钥
export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"
#申请证书
acme.sh --issue --dns dns_ali -d example.com -d www.example.com

更多DNS API设置请参考:https://github.com/Neilpang/acme.sh/tree/master/dnsapi

签发泛域名证书

以CloudXNS DNS为例,我们为awk.sh签发一个泛域名证书。

acme.sh --issue --dns dns_cx -d awk.sh -d *.awk.sh

申请成功后会提示证书绝对路径(如下截图),接下来就可以在WEB服务上部署SSL证书了。

如果您使用的Nginx可参考《Nginx怎样部署SSL证书》部署SSL证书,一般只会用到fullchain.cerdomain.com.key这两个文件。

复制证书

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件。正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

acme.sh  --installcert  -d  xiaoz.top   \
        --key-file   /data/ssl/xiaoz.top.key \
        --fullchain-file /data/ssl/xiaoz.top.cer \
        --reloadcmd  "service nginx force-reload"

总结

目前Let's Encrypt已经支持多域名、泛域名,但缺点是有效期依然只有三个月,即使可以设置脚本自动续期,但是管理维护还是有点不便。

部分内容参考与:https://github.com/Neilpang/acme.sh

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注


已有2条评论


  1. 1. 我觉得这样更好:

    
    acme.sh --issue --server https://acme-v02.api.letsencrypt.org/directory --dns dns_cx -d awk.sh -d *.awk.sh
    

    裸域名和泛域名一同申请了,并且明确指明申请的是wildcard证书
    2. 参照官方的推荐,不要使用证书生成的地址,用这个命令拷贝到一个自定义的目录

    
    acme.sh --installcert  -d awk.sh -d *.awk.sh   \
            --key-file  /etc/nginx/ssl/awk.sh.key \
            --fullchain-file /etc/nginx/ssl/fullchain.cer \
            --reloadcmd  "service nginx force-reload"
    

    然后在nginx里面修改为证书为自定义的目录即可
    3. acme.sh会自动在crontab里面加上自动续期的命令,所以3个月就不需要多操心了

    1. 谢谢指导,我测试后尝试修改一下。虽然会添加crontab,但是如果将证书导出来在其它服务器用也不是很方便。