Let's Encrypt将免费服务提供给全世界,让昂贵的SSL变得触手可及,同时提升互联网整体的安全水平。
自2015开始,Let's Encrypt便提供免费的单域名证书。很多主机服务商、CDN服务商、面板均可自动申请并续签。
2018年初,Let's Encrypt开始提供通配符证书,即一套证书可以用于所有子域名。当颁发给i.iwyc.cn
时,所有一级子域名均可以使用该证书。大大的福利!
下面是申请Let's Encrypt泛域名SSL证书的教程:
一、安装acme.sh脚本
参考:acme.sh中文指南
打开终端,键入:
curl https://get.acme.sh | sh
如果提示curl命令不存在,则需要安装相关依赖。
二、验证域名
acme.sh 实现了 acme 协议支持的所有验证协议。一般有两种方式验证: http 和 dns 验证。
推荐使用DNS验证,并且配合域名解析商提供的 api 自动添加 txt 记录完成验证。这是最简单、便捷的方式。
- 无需指定IP即可验证域名
- 全自动化申请并续签
- 随意使用CDN或跳转,只要不更改域名解析商,都不影响续签
其它方式请参考官方指南。
1.登录域名解析商获取API
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。
可以在官方文档-API用法中查询acme.sh支持的解析商以及对应的指令。
以DNSPOD(腾讯云)为例,在用户中心-安全设置中开启API,并将ID和Token记下来。
2.然后将API输入终端:
export DP_Id="替换为数字ID"
export DP_Key="替换为Token值"
注意,这是DNSPOD的指令,如果是其它解析商,请参照官方文档-API用法。
三、生成证书
在终端中键入:
acme.sh --issue --dns dns_dp -d iwyc.cn -d *.iwyc.cn
请替换成自己的域名,*是通配符,支持任何一级子域名。
终端中会输出证书存放的位置,可以按图索骥找到证书文件。
可以看到证书包中有很多文件,其中域名.key是秘钥;a.cer存储的是CA证书,域名.cer是域名证书,fullchain.cer是前两者的拼接;域名.csr是证书签名请求。
四、使用证书
在宝塔面板中,只需要将证书文件拷贝到“其他证书”中,保存即可。
基于Nginx的服务器,左侧拷贝的内容是域名.key,右侧拷贝的是fullchain.cer。基于Apache请自行搜索。
如果没有使用面板,可以在终端中使用 --installcert
命令进行安装。
五、检验证书
访问myssl.com,检验证书是否安装正确。
其它
1.自动续签
安装acme.sh时,会自动创建 cronjob,每天 0:00 点自动检测所有的证书,如果快过期了, 则会自动更新证书。
2.更新acme.sh
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
关闭自动更新:
acme.sh --upgrade --auto-upgrade 0