Let’s Encrypt 通配符证书(Wildcard Certificates)申请

By | 2018年3月14日

等了好久好久,今天终于见到你了。

首先你可以查看下官方提供的支持申请通配符证书的客户端列表:https://letsencrypt.org/docs/client-options/

这些客户端支持最新的ACME v2接口,而这个接口目前已经正式支持申请通配符证书啦。

这里,我使用acme.shhttps://github.com/Neilpang/acme.sh)这个Client,它是直接在bash下运行,使用非常简单,而且支持大多数DNS服务器的API自动验证!

1、安装acme.sh

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

一句话完成安装,安装过程分为:

1)复制acme.sh的程序文件到当前用户主目录,比如root用户的:~/.acmh.sh目录下

2)创建一个alias:acme.sh=~/.acme.sh/acme.sh

2、装完后,就可以开始申请证书了,这里我用的是阿里云的DNS,所以为了能配合完成自动验证,需要在acme.sh的配置中写入阿里云的密钥信息:

vim ~/.acmh.sh/account.conf

#添加阿里云密钥,改成自己的
Ali_Key="xxxx"
Ali_Secret="xxxxx"

3、最后,重点来了,通配符证书申请命令(以我自己的域名为例):

acme.sh  --issue -d coderecord.cn  -d *.coderecord.cn  --dns dns_ali

注意,这里–dns参数使用的是dns_ali,告诉acme.sh使用阿里云的DNS接口去自动验证。(好处:全程无干预,不需要暂停web服务器!)

4、查看生成的证书文件,证书默认生成在:~/.acme.sh/coderecord.cn下:

5、最后,就是配置Apache、NGINX啦。这里以Apache为例子:

首先我们要把生成的证书文件复制出来,这里我放到/etc/apache2/ssl/目录下,运行下面命令:

acme.sh --install-cert -d coderecord.cn \
--cert-file /etc/apache2/ssl/coderecord.cn-cert.pem \
--key-file /etc/apache2/ssl/coderecord.cn-key.pem \
--fullchain-file /etc/apache2/ssl/letsencrypt.pem 

一共用到三个文件,然后再配置apache的ssl配置,主要是这三个参数的文件位置要修改:

SSLCertificateFile /etc/apache2/ssl/coderecord.cn-cert.pem
SSLCertificateKeyFile  /etc/apache2/ssl/coderecord.cn-key.pem
SSLCertificateChainFile  /etc/apache2/ssl/letsencrypt.pem

最后reload下apache。

ps:本站的www已经切换为通配符证书啦。

在配置过程中,如果有问题,可以参考:https://github.com/Neilpang/acme.sh/wiki