Let’s Encrypt acme.sh 泛域名证书 / 2018-08-05

使用acme.sh脚本安装Let’s Encrypt SSH证书更加方便高效,推荐使用。

笔者之前一直都是使用 certbot 方式安装Let’s Encrypt SSH证书。在最近升级时更换为 acme.sh,acme.sh方式更加简洁,对系统干扰最小。部署过程如下:

一,安装acme.sh脚本

root@easeapi:/root# curl https://get.acme.sh | sh

acme.sh脚本会安装在/root/.acme.sh目录。 注意:安装脚本时会在系统定时任务中添加一个任务:

sudo crontab -e
38 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

acme.sh每天会自动执行任务,以防止letencrypt证书过期。如果怕对系统有影响,屏蔽这个命令,记得快到3个月了手动更新证书即可。

二,安装证书

acme.sh支持DNS方式验证域名所有权,且支持DNS API,如果是阿里云的话,可以通过配置Ali_Key/Ali_Secret环境变量。在这里可以可以查询其他服务商的环境变量,

https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

cd /root/.acme.sh
#替换成从阿里云后台 https://ak-console.aliyun.com/#/accesskey 获取的密钥:
export Ali_Key="xxxxxxx"
export Ali_Secret="xxxxxxxxxxxxxx"
#请求域名证书,这里申请的是泛域名证书,以后增加子域名不用再重新申请了
./acme.sh --issue --dns dns_ali -d easeapi.com -d *.easeapi.com
#--dns 指定的服务商标识; -d 指定域名。
  • 该操作会授权acme.sh在你的域名新建一个DNS记录,等待120秒验证DNS生效之后即可申请证书;
  • 输入的Ali_Key,Ali_Secret等配置信息会存储在/root/.acme.sh/account.conf文件;
  • 创建成功后的证书信息存储在/root/.acme.sh/你的域名,核心文件就是.cer和.key。

三,使用证书

将easeapi.com.cer,easeapi.com.key,fullchain.cer拷贝到线上机器的指定目录,然后在apache对应站点的conf中配置:

SSLEngine on
SSLCertificateFile easeapi.com.cer
SSLCertificateKeyFile easeapi.com.key
SSLCertificateChainFile fullchain.cer

四,手动更新证书

目前每次申请Encrypt SSH证书有效期三个月,三个月之后需要更新证书,手动更新证书:

acme.sh --renew -d easeapi.com -d *.easeapi.com

五,更新acme.sh脚本

操作时最好保证脚本是最新的:

acme.sh --upgrade

其它文章

部署PHP WEB服务时遇到的问题
阿里云云盘扩容笔记