最低成本的HTTPS证书获取方式--自动化、免服务器、轻量脚本

2,067 阅读2分钟

“我是一个穷屌丝,我没有服务器,也没有独立ip,该如何为我的域名申请https证书?”

专门面向穷屌丝的证书服务商- let's encrypt

let‘s encrypt是一家专门面向穷屌丝的https证书服务商。他家的证书除了永久免费之外,还提供了一大堆自动化工具来主动帮助穷屌丝白嫖。

自动化工具

目前使用最广泛的https证书自动化工具中就是certbot。但是我们今天要分享的主角不是certbot,而是一个轻量级的证书获取工具- acme.sh。跟certbot一样,它实现了acme协议,可以帮助我们免费获取let's encrypt 证书;不同的是,acme.sh完全由bash脚本组成,可以轻松运行在大多数unix/linux环境下。

acme.sh 内建了大量dns服务商的支持,其中就包括国内使用比较广泛的阿里云。

用acme.sh获取一个证书

下面就是基于acme.sh和阿里云域名,获取https证书的步骤:

  1. 下载acme.sh代码git clone https://github.com/acmesh-official/acme.sh.git
  2. 获取阿里云账号的AccessKey和AccessKeySecret(如果是子账号,需要配置云解析的权限)
  3. 在代码根目录下添加cmd.sh内容如下:
    #!/usr/bin/env sh
    export Ali_Key="YOUR_AccessKey"
    export Ali_Secret="YOUR_AccessKeySecret"
    export LE_WORKING_DIR="./out"
    ./acme.sh --issue --dns dns_ali -d *.yourdomain.com
    
  4. 运行bash cmd.sh
  5. 待程序执行完成,即可在./out 目录下看到*.yourdomain.com文件夹,里面就存放了你的https证书

这样,就得到了一个yourdomain.com泛解析域名证书,这个证书可以用在yourdomain.com和任意的yourdomain.com三级域名上。比如test2.yourdomain.com

基于安全性的考虑,也可以仅申请特定域名证书,比如 ./acme.sh --issue --dns dns_ali -d test1.yourdomain.com

就可以得到一个只用于test1.yourdomain.com的证书

在let's encrypt获取到的证书往往只有3个月有效期。

可以基于run.sh这个脚本,添加定时任务,实现定期自动更新证书。

最后

把证书部署到自己网站上,就能看到绿色的小锁头了:

img