借助acem.sh
来迅速实现let’s encrypt的泛域名ssl证书颁发与续期,基本上五分钟就可以解决战斗
本文主要内容来自acme.sh的官方wiki,一切以官方说明为准: acme wiki
I. 安装步骤
1. 登录服务器
登录到某台linux服务器,我这里以Centos举例说明
1 | ssh xxx@xxx |
2. 安装acme.sh
1 | yum install socat -y |
3. 申请密钥
到域名购买服务商,申请api key,用于后期的txt记录验证
DNSPod
密钥申请完毕之后,如下操作导入命令
1 | # DNSPod |
阿里云
ALY_KEY 和 ALY_TOKEN:阿里云 API key 和 Secrec 官方申请文档。
申请完毕之后,如下操作
1 | export Ali_Key="key" |
godaddy
- GODADDY_KEY 和 GODADDY_TOKEN:GoDaddy API 密钥官方申请文档
1 | export GD_Key="key" |
其他
至于其他平台,应该如何导入API key,可以参考下面的文档,这里不一一说明了
4. 证书生成
1 | # 请注意,--dns后面的参数,一般来讲后缀就是上面的导入key的前缀 |
证书生成之后,会在.acme.sh
目录下,新生成一个 *.hhui.top
(就是我们上面指定的通配域名) 文件夹,证书在里面
5. 安装证书
接下来将我们的证书安装到nginx(当然也可以是tomcat),下面的脚本除了安装之外,也添加了一个自动更新的任务(一般来说,60 天以后会自动更新,并会强制重启nginx使新的证书生效,可以通过 crontab -e
看到对应的定时任务)
1 | ./acme.sh --installcert -d 'hhui.top' -d '*.hhui.top' --key-file /etc/nginx/ssl/key.pem --fullchain-file /etc/nginx/ssl/cert.pem --reloadcmd "service nginx force-reload" |
6. nginx配置
然后就是配置nginx,支持https
下面是一个基础的nginx配置实例
1 | server { |
7. 手动续期
手动续期,强制执行,命令如下
1 | ./acme.sh --issue --dns dns_ali -d 'hhui.top' -d '*.hhui.top' --force |
执行完毕之后,会输出几个证书,我们需要的是 fullchain.cer
与 hhui.top.key
安装证书并重启
1 | cp ~/.acme.sh/hhui.top/hhui.top.key /etc/nginx/ssl/key.pem |
然后浏览器访问目标网站,查看证书判断是否ok
II. 其他
1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog