Let's Encrypt支持通配符证书了,也就是说你只需要为你的网站申请*.example.com这样一个证书,所有的子域名都可以支持,下面介绍下申请方法:
acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。
首先需要获取acme.sh
$ curl https://get.acme.sh | sh
普通用户和 root 用户都可以安装使用。
会安装在 ~/.acme.sh/ 目录下,以后生成的证书也会在这里面,按照域名为文件夹安置。
理论上会自动添加一个 acme.sh 别名,但有时候并不会生成,需要手动执行以下命令:
$ source ~/.bashrc
acme.sh支持自动配置DNS,这样需要在域名控制后台获取AppKey和AppSecret.常见的阿里,Dnspod等都支持,这里有更详细的介绍:传送门
下面我们已CloudXNS为例,CloudXNS API需要到 https://www.cloudxns.net/AccountManage/apimanage.html 这里获取API KEY
和 SECRET KEY
服务商名称 | 服务商简称 | 所需API参数 | 获取API参数地址 |
---|---|---|---|
cloudxns | cx | export CX_Key="123456" export CX_Secret="abcdef" | 点击访问 |
dnspod (cn大陆版) | dp | export DP_Id="123456" export DP_Key="abcdef" | 点击访问 |
aliyun | ali | export Ali_Key="123456" export Ali_Secret="abcdef" | 点击访问 |
cloudflare | cf | export CF_Key="123456" export CF_Email="abc@example.com" | 点击访问 |
linode | linode | export LINODE_API_KEY="123456" | 点击访问 |
he | he | export HE_Username="username" export HE_Password="password" | he的用户名密码 |
digitalocean | dgon | export DO_API_KEY="123456" | 点击访问 |
namesilo | namesilo | export Namesilo_Key="123456" | 点击访问 |
aws | aws | export AWS_ACCESS_KEY_ID=123456 export AWS_SECRET_ACCESS_KEY=abcdef | 点击访问 |
namecom | namecom | export Namecom_Username="username" export Namecom_Token="123456" | 点击访问 |
freedns | freedns | export FREEDNS_User="username" export FREEDNS_Password="password" | freedns的用户名密码 |
godaddy | gd | export GD_Key="123456" export GD_Secret="abcdef" | 点击访问 |
yandex | yandex | export PDD_Token="abcdef" | 点击访问 |
通过表格可以知道,cloudxns的简称为cx,我们也通过CloudXNS网站获取到了API KEY和SECRTET KEY,下面需要在终端里将API操作所需的参数输出供程序使用
# 替换成从cloudxns后台获取的密钥
export CX_Key="CX_Key"
export CX_Secret="CX_Secret"
# 换成自己的域名
acme.sh --issue --dns dns_cx -d fkomm.cn -d *.fkomm.cn
这里是通过休眠120秒等待DNS生效的方式,所以至少需要等待两分钟,如果看到了验证成功的输出,则说明已经申请成功了。这种方式成功之后,会记录下App_Key跟App_Secret,并且生成一个定时任务,每天凌晨0:00自动检测过期域名并且自动续期。