dawid-zawila-285122-unsplash

10小时前,Let’s Encrypt 项目宣布,ACME v2 and Wildcard Certificate Support 即日生效。我们普通用户终于可以拥有免费 Wildcard Certificate ,俗称野卡。

通配型证书(wildcard certificate)是在一个域及其所有子域上应用的数字证书。 通配型符号由一个星号和域名前的一段时间构成。 安全套接层(SSL)证书常运用通配符来扩展子域的SSL加密。

通配符SSL证书可以同时保护一个域名下的2级子域名网站,比如*. yourdomain.com,对子域名网站是没有数量限制,用户可以随时添加自己的子域名网站。

这对拥有多个2级子域名网站的站长来说无疑是个好消息,省去了管理多个域名证书的麻烦。

本文以本站域名 yalv.me为例,在 Centos 7 系统下,使用 ACME.SH 工具,介绍如何申请 Let’s Encrypt 免费通配型证书。

ACME.SH 实现了 ACME 协议支持的所有验证协议,一般有两种方式验证: HTTP 和 DNS 验证。不过,目前申请野卡必须要使用DNS 验证方式,本文介绍使用域名解析商(CloudXNS为例) API 自动 DNS 验证的方式,大大提高效率。

1. 下载相关依赖

登陆服务器,执行以下命令:

yum update -y &&  yum install curl -y

2. 安装 ACME.SH

curl https://get.acme.sh | sh

这样就把 ACME.SH 安装到~/.acme.sh/目录下。

3. 获取CloudXNS的API KEY 和 Secret KEY

先将域名解析到 CloudXNS,打开apimanage申请 API ,注意需将你安装 ACME.SH 的VPS IP设置进入白名单!

export CX_Key="XXXXXX"
export CX_Secret="XXXXXXX"

输入的 API 信息,ACME.SH 会自动保存到~/.acme.sh/account.conf中,下次申请无需再次输入。

ACME.SH 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成,更详细的 API用法: API用法

4. 执行签发程序

~/.acme.sh/acme.sh  --issue   --dns  dns_cx -d  yalv.me -d *.yalv.me

注意:第一个 -d 后面不可以直接写 *.xx.com ,一定要写个普通单域名,第二个 -d 后面可以写泛域名。

建议使用3个 -d,即 @,www,和*.

5. 证书安装

CSR、KEY、CERT都在此路径下: /root/.acme.sh/yalv.me

官方推荐使用--installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 如果你使用的lnmp1.4 环境,可以参考以下命令:

~/.acme.sh/acme.sh  --installcert  -d  yalv.me   \
        --key-file   /usr/local/nginx/conf/ssl/yalv.me.key \
        --fullchain-file /usr/local/nginx/conf/ssl/fullchain.cer \
        --reloadcmd  "service nginx force-reload"

6. 更新证书

证书在 60 天以后会自动更新, 你无需任何操作。

ACME.SH 更多高级用法,请参考 ACME.SH WIKI