“我是一个穷屌丝,我没有服务器,也没有独立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证书的步骤:
- 下载acme.sh代码
git clone https://github.com/acmesh-official/acme.sh.git - 获取阿里云账号的AccessKey和AccessKeySecret(如果是子账号,需要配置云解析的权限)
- 在代码根目录下添加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 - 运行bash cmd.sh
- 待程序执行完成,即可在./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这个脚本,添加定时任务,实现定期自动更新证书。
最后
把证书部署到自己网站上,就能看到绿色的小锁头了: