基于acme.sh脚本自动化白嫖SSL证书
简单介绍
acme.sh 实现了 acme 协议, 可以从 Let’s Encrypt 生成免费的证书。支持一键脚本和 docker 部署.支持 http 和 DNS 两种域名验证方式。
acme部署
通过使用域名服务商提供的 API 密钥,让acme.sh自动创建域名验证记录以申请域名证书. acme.sh 支持全球各种域名服务商的 API ,本文将以腾讯云(我的服务器在这)。其他例如阿里云、Cloudflare等 DNS API 支持,可以查看官方的文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi。
获取腾讯云dnsapi
登录DNSPod控制台访问api密钥https://console.dnspod.cn/account/token/apikey。获取DNSPod Token,注意:是DNSPod Token,不是腾讯云API密钥,如下截图。

记录下id和token
1  | export DP_Id="1234"  | 
更多云服务商的填写方式请看官方文档:https://github.com/acmesh-official/acme.sh/wiki/dnsapi

安装脚本
1  | wget -O - https://get.acme.sh | sh  | 
配置 DNS API
acme.sh 程序目录为隐藏目录.acme.sh存放在root下.执行以下命令进入目录,并编辑account.conf,根据上文获取的 API 格式,复制粘贴到文件中保存.
1  | cd ~/.acme.sh  | 

直接将配置放在account.conf文件开头保存即可

申请证书
1  | acme.sh --issue --server letsencrypt --dns dns_dp -d example.com -d www.example.com  | 
其中dns_dp为 腾讯云DNSPod.cn 服务商,自行根据官方dnsapi修改。例如:dns_ali为阿里云,dns_cf为CLoudflare。
复制
以我的的域名为例:
1  | acme.sh --issue --server letsencrypt --dns dns_dp -d mj.hwy.ac.cn  | 
当然你一次性申请多个域名的证书也是可以的只要遵循** -d 空格 域名 **的格式,如下:
1  | acme.sh --issue --server letsencrypt --dns dns_dp -d abc.com -d *.abc.com -d def.com -d *.def.com  | 
安装证书到指定文件夹
1  | acme.sh --install-cert -d mj.hwy.ac.cn \  | 
mj.hwy.ac.cn:申请的域名
key-file:密钥文件的存放路径(可以自定义)
fullchain-file:验证证书的存放路径(可以自定义)
reloadcmd:重启nginx的命令,这个根据你的nginx重启方式更改
安装完毕之后acme.sh一般会自动续签,你可以使用如下命令查看它的定时任务:
1  | crontab -l  | 

配置nginx
接下来就是配置nginx对于你们老司机来说这就很简单了,找到你们nginx配置文件nginx.conf
在监听443那里配置上刚刚我们设置的文件路径即可:
1  | ssl_certificate /home/certificate/nginx/cert.pem;  | 

最后在监听80端口配置那里设置一下转发:
1  | server_name mj.hwy.ac.cn;  | 

保存文件,重启nginx,我的重启命令是:
1  | /usr/local/nginx/sbin/nginx -s reload  | 
等待一分钟左右,就可以在浏览器看到https了

总结
快来使用acme.sh一起白嫖吧,这个脚本太方便了,感谢一直位它提供更新维护的各路大神,膜拜。





