申请Let's Encrypt通配符证书


Let's Encrypt支持通配符证书了,也就是说你只需要为你的网站申请*.example.com这样一个证书,所有的子域名都可以支持,下面介绍下申请方法:

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。

  • 安装 acme.sh
  • 生成证书

安装 acme.sh

首先需要获取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 KEYSECRET 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自动检测过期域名并且自动续期。