利用acme.sh签发Let's Encrypt 通配符证书

最近几天有消息传出,Let's Encrypt支持通配符证书了,那真是喜闻乐见,其实早在去年Let's Encrypt就曾经说过2018年将会支持签发 通配符证书。那在这几天确切消息已经传出来了。然后今天就马上试了一下。一直以来我都是使用acme.sh 签发的证书,虽然Let's Encrypt也有官方的工具。

安装acme.sh

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

Or

wget -O -  https://get.acme.sh | sh

其他安装方式请参考acme.sh wiki 或中文 acme.sh wiki

签发证书

acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns 验证.
这里我选择 dns验证,相对于 http验证,dns更加灵活方便。

终端执行命令

export Ali_Key="xxxxx" // xxxxx 替换成阿里云Access Key ID 
export Ali_Secret="xxxxx"  // xxxxx 替换成阿里云Access Key Secret

或编辑account.conf文件加入以下内容

SAVED_Ali_Key="xxxxx" // xxxxx 替换成阿里云Access Key ID                                                                                                                                                            
SAVED_Ali_Secret="xxxxx" // xxxxx 替换成阿里云Access Key ID   

其他DNS解析服务请参考 dnsapi
把boiko.cn 换成需要签发的域名

./acme.sh --issue --dns dns_ali -d test.boiko.cn

执行以上命令将会签发 test.boiko.cn 证书
将test 改为 * 将会签发通配符证书

./acme.sh --issue --dns dns_ali -d *.boiko.cn

签发成功后,boiko.cn的子域名都将可以使用这个证书了,但是这个时候 boiko.cn 是无法使用证书的,还需要加上

./acme.sh --issue --dns dns_ali -d *.boiko.cn -d boiko.cn

签发成功后,将会目录下生成一个目录,这个目录下存放这公钥以及私钥。

[root@xxxxx*.boiko.cn]# ls                                                                                                                                             
*.boiko.cn.cer  *.boiko.cn.conf  *.boiko.cn.csr  *.boiko.cn.csr.conf  *.boiko.cn.key  ca.cer  fullchain.cer 

fullchain.cer 文件就是域名的公钥,部署时请使用该文件内容。
*.boiko.cn.key 文件就是域名的私钥,请妥善保管

将签发的证书部署在网站上就可以生效了。

unpkg.boiko.cn 已经部署上通配符证书了

unpkg is a fast, global content delivery network for everything on npm. Use it to quickly and easily load any file from any package using a URL like

证书部署方法请自行google