本文介绍使用简单的命令行小工具acme.sh
来签发Let's Encrypt
证书,支持签发多域名和泛域名(通配符)证书,可以使用DNS
验证或者HTTP
验证方式。
本文尚未完成,不过已经尽力在写了。
系统要求:可以使用WSL的Windows 10版本(如何开启WSL请使用百度)或者常见的Linux发行版 MacOS应该也不会有什么问题
运行需求:如果在你本地计算机运行,那基本上只能使用DNS验证,如果在网站所在的服务器上运行,则一般可以使用DNS和HTTP方式进行域名所有权验证。如果使用DNS验证可能需要获取API,不然需要手动添加DNS记录
- 安装acme.sh
运行curl https://get.acme.sh | sh
如果在国内网络进行该安装操作,可能下载速度比较缓慢,若反复不成功请考虑其它方式。
正常应该会很快安装完毕,如有报错请根据报错内容检查。
- 使用acme.sh签发证书
注意,以下所有的签发命令都可以在命令最后添加--test
来使用LE的测试环境,和他们正式环境的验证过程都一样,就是最后会给你签发一个无效的自签名证书,可以很方便的用来测试。
[1] 通过HTTP验证(仅支持单域名/多域名,通配符请看通过DNS验证)
运行acme.sh --issue -d yourdomain.com -d abc.yourdomain.com --webroot /your/website/
其中yourdomain.com需要修改成你要签发证书的域名,如果域名比较多就反复添加-d,/your/website/
改成你域名的网站目录。acme.sh
会智能的自动为你创建验证文件并进行验证。如果成功签发,shell里会输出证书和私钥的文件,就可以拿去使用了。
[2] 通过DNS验证
(1) 手动添加DNS记录
官方并不推荐使用手动模式,我也推荐看下一节通过DNS服务商提供的API验证,但手动模式还是需要写一下的。
(2) 通过DNSAPI验证(推荐,可在WSL下使用)
(3) 通过DNS别名方式验证