检测到您启用了Adblock等屏蔽广告扩展,导致正常的内容图片无法显示,为了不影响阅读体验,建议您将www.xiaoz.me加入白名单。

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

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 Comments

发表评论

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