acme.sh是可以快速签发Let’s Encrypt SSL证书的shell脚本。
中文说明:https://github.com/Neilpang/acme.sh/wiki/说明
该脚本支持CloudFlare、阿里云、CloudXNS、DNSpod、GoDaddy、Name.com、Namesilo等众多国内外域名解析API。本文以阿里云为例,其他域名解析服务商获取API方式请参考:
Tip:本文操作的环境为Ubuntu16.04,部分发行版可能不支持使用该shell脚本安装acme.sh的指令,详情请查阅Github上的文档。
一、安装acme.sh
wget -O - https://get.acme.sh | sh
等待安装完成后,断开SSH,重新连接,就可以开始了。
二、去阿里云获取AccessKey(其他域名解析服务商的API参照文章前述的Github链接)
https://ak-console.aliyun.com/#/accesskey
点击开始使用子用户AccessKey
有人反映点击开始使用子用户AccessKey后跳转到一个英文指南站,似乎是使用海外版阿里云的问题,可在控制台右上角点击AccessKey,然后手动创建子用户,再创建AccessKey。
2018-12-10更新:
最近阿里云升级了访问控制RAM系统,步骤略有改变,大体操作方式一致。如下文所示。
点击上面开始使用子用户AccessKey后,会提示创建用户。
输入登录名称(如domain-credits)以及显示名称(可以和登录名称相同)。勾选编程访问,点击确定即可获取AccessKey。
然后勾选创建的用户,点击添加权限按钮。
在搜索栏里搜索DNS,找到管理云解析(DNS)的权限,然后选择这项权限,点击确定保存。
三、输入AccessKey
输入刚才从阿里云获取的AccessKeyID和AccessKeySecret(Ak和Sk)。
export Ali_Key="获取到的Ak"
export Ali_Secret="获取到的Sk"
Tip:不同的域名解析服务商的指令不同,例如阿里云的是Ali_Key和Ali_Secret,CloudXns的是CX_Key和CX_Secret。
四、开始签发
输入如下指令(Tip:不同的域名解析服务商的指令也不同,例如阿里云是–dns dns_ali)
acme.sh --issue --dns dns_ali -d 域名1 -d 域名2
Tip:该指令可以输入多个域名,也可泛域名。例如域名1可以是example.com,域名2可以是*.example.com,域名3可以是example.cn。如果脚本执行不成功,重新连接SSH再重复一遍第三和第四部分即可。
五、等待120S
此时会进行120S倒计时,以便验证DNS记录。有时候为一次或多次20S倒计时验证,是由acme.sh的shell脚本视具体DNS服务商而定。
六、获取证书
结束后会有如下提示。
其中第二行的example.com.key为私钥,第四行的fullchain.cer为证书。
证书文件的目录为
/root/.acme.sh/example.com/
。
至此证书签发结束,一般情况下该证书会自动续期。
一般默认情况下签发的证书等信息会存放于用户目录(/home/username/.acme.sh,如果是root用户则为/root/.acme.sh)下,可以通过安装来自定义证书存放路径。(reloadcmd参数请一般用于重启WEB服务,这里是Nginx,请根据实际WEB服务来填写相应重启命令)
acme.sh --install-cert -d hanada.info \
--cert-file /etc/nginx/ssl/hanada.info/cert \
--key-file /etc/nginx/ssl/hanada.info/key \
--fullchain-file /etc/nginx/ssl/hanada.info/fullchain \
--reloadcmd "systemctl restart nginx"
将该证书和私钥配置在Nginx / Apache上,或者在某些面板上相应位置填入证书和私钥即可实现HTTPS访问。
除了获取AccessKey的操作、输入AccessKey的指令、签发的指令有所不同以外,其他域名解析服务商的操作步骤大致相似。参考https://github.com/Neilpang/acme.sh/wiki/dnsapi进行操作即可。
本站目前评分
访问https://www.ssllabs.com/ssltest/analyze.html可检测站点的安全性评分。
七、补充说明
签发的证书存放在用户目录的.acme.sh文件夹下,以签发的证书的第一个域名为文件夹名和文件名。如为root用户即在 /root/.acme.sh 文件夹下。证书签发成功后会添加一个corn任务,每天检查一次证书是否过期,如过期将会自动重签续期。