Let’s Encrypt 通配符证书(Wildcard Certificates)申请
等了好久好久,今天终于见到你了。
首先你可以查看下官方提供的支持申请通配符证书的客户端列表:https://letsencrypt.org/docs/client-options/。
这些客户端支持最新的ACME v2接口,而这个接口目前已经正式支持申请通配符证书啦。
这里,我使用acme.sh(https://github.com/Neilpang/acme.sh)这个Client,它是直接在bash下运行,使用非常简单,而且支持大多数DNS服务器的API自动验证!
1、安装acme.sh
1 | curl https://get.acme.sh | sh |
一句话完成安装,安装过程分为:
1)复制acme.sh的程序文件到当前用户主目录,比如root用户的:~/.acmh.sh目录下
2)创建一个alias:acme.sh=~/.acme.sh/acme.sh
2、装完后,就可以开始申请证书了,这里我用的是阿里云的DNS,所以为了能配合完成自动验证,需要在acme.sh的配置中写入阿里云的密钥信息:
1 | vim ~/.acmh.sh/account.conf |
3、最后,重点来了,通配符证书申请命令(以我自己的域名为例):
1 | acme.sh --issue -d junyao.tech -d *.junyao.tech --dns dns_ali |
注意,这里–dns参数使用的是dns_ali,告诉acme.sh使用阿里云的DNS接口去自动验证。(好处:全程无干预,不需要暂停web服务器!)
4、查看生成的证书文件,证书默认生成在:~/.acme.sh/junyao.tech下:
5、最后,就是配置Apache、NGINX啦。这里以nginx为例子:
首先我们要把生成的证书文件复制出来,这里我放到/etc/nginx/ssl/目录下,运行下面命令:
1 | acme.sh --install-cert -d junyao.tech \ |
6.配置Nginx
1 | server { |
最后reload一下 nginx
总结:
这里把几个命令整一起,方便使用。
首先,我这里用的阿里云的解析,所以,需要提前设定阿里云的密钥,方法是:
1 | vim ~/.acmh.sh/account.conf |
保存之后,后面使用这个参数时(–dns dns_ali),就自动读这个信息了。
下面是把申请证书和复制证书放在一个文件(new_https.sh)中执行了,只需要传入参数(申请的域名),完成后,只需要去手动修改下apache的配置即可(nginx同理)
1 | #!/bin/bash |
使用方法:
1 | new_https.sh junyao.tech |