Let’s Encrypt泛域名证书生成 acme.sh免费申请使用配置 地表最强教程

这博客越来越卡,从统计数据了解到跳出率差不多 85% ,新用户进入差不多要 5 秒左右,简直卡的不行。感觉我迟早要升级服务器配置。但是在升级前,想先将图片做好对象存储。在配置阿里云 OSS 对象存储之前需要准备好一个泛域名证书。

现在网站使用的证书是最初建站时送的一年宝塔免费证书。半小时 宝塔搭建一个部署SSL证书 配置伪静态实现301跳转HTTPS的网站

了解到使用 acme.sh 可以免费生成 Let's Encrypt 泛域名证书,然后自己操作一番,步骤虽然多,但只要操作一次以后就一劳永逸,只要需要填写证书,就可以用他们。

 

该文章对应视频教程 https://www.youtube.com/watch?v=RxYAPItx-5E 

 

准备

需要准备好一台服务器,这里当然使用我安装宝塔面板的网站服务器。

其次要给一个域名生成证书, Let's Encrypt 要验证域名的所有权。毕竟不能随便给个域名生成证书,然后配置还希望它有效吧。

Let’s Encrypt` 支持通过 DNS 解析一条 TXT 记录来验证。 我使用的方法也是这种,因为该脚本acme.sh 提供了API快速设置。(后面会提)

但是这API并不是每个人都能使用,这里我的域名服务器是阿里云DNS,这里有点特殊,每个人可能不一样。如果你也在阿里云购买的域名,基本按照以下操作没问题的。如果不是在其他地方购买的,比如 GoDaddy 或者 Namesilo 等等,acme.sh 都有提供方法设置。具体后面见列表。

安装

这里我通过 xshell 远程登录到服务器,然后输入下面命令安装脚本。随便啥位置都行。

curl https://get.acme.sh | sh

不出意外,你会看到如下界面内容。

开通阿里云AccessKeys子账户

前面说了阿里云DNS可以使用它们的API,可以看看你的DNS服务器在不在里面。我仔细看了,就算不在其中,通过一些方法也能使用其 DNS API ,所以不用放弃。

export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

在里面可以找到,要使用此API,需要如上两个值。这两个值需要开通阿里云AccessKeys戳这里开通

如果你是第一次开通,并且没有开通子账户,会出现如下界面。其实 AccessKeys 并不是我第一次使用,以前使用都没用子账户,这次准备使用子账户。

接着一直往下点击就是了。

不出意外我们进入总览界面,接着创建一个新用户,毕竟我们目的就是这。

取好名字,然后看你需求勾选,这里我并不需要这新用户登录界面,只要能在代码中使用 Key 就行。

完成后出现如下内容,一定要记住其中的 AccessID 和 AccessKeySecret ,上面脚本中要填写的也就是这两个值。

这一步点击完成后,AccessKeySecret 就不会再次出现,万一 万一 你弄丢了,也没事 ,再次生成一对就行,但是你用到他们的地方都要替换成新的。

现在还不能直接将值填写进去使用,因为还要给这个新用户赋予权限。

搜索 DNS 将 `AliyunDNSFullAccess ` 添加过去,其他不用就这一个可以了。最后点击确定

配置API

输入命令,修改 .bashrc 文件,将如上代码添加进去。记得修改成自己的 key 和 value 。

vim ~/.bashrc

这里插一句,如果 vim 指令不清楚的,我写详细点,懂的人不用看。

输入如上命令后

i

复制如上代码,用方向键控制到相应位置,然后右键粘贴

Esc

:wq


出来后重新加载文件

source ~/.bashrc

生成泛域名证书

这里比较简单,就一行命令,记得替换成你自己的域名,两个位置都要替换。

acme.sh --issue --dns dns_ali -d guozh.net -d '*.guozh.net'

成功后界面上有文件的存放地址

可以进去看看

cd  /www/server/panel/vhost/cert/guozh.net/

有以下几个文件

-rw-r--r-- 1 root root 1648 Jul 12 16:27 ca.cer
-rw-r--r-- 1 root root 3563 Jul 12 16:27 fullchain.cer
-rw-r--r-- 1 root root 1915 Jul 12 16:27 guozh.net.cer
-rw-r--r-- 1 root root  558 Jul 12 16:27 guozh.net.conf
-rw-r--r-- 1 root root  980 Jul 12 16:26 guozh.net.csr
-rw-r--r-- 1 root root  220 Jul 12 16:26 guozh.net.csr.conf
-rw-r--r-- 1 root root 1675 Jul 12 16:26 guozh.net.key

其中证书文件 fullchain.cer 密钥文件 guozh.net.key 以后在使用别人服务时要填写SSL证书内容就是这两个。

前面说了Let’s Encrypt` 支持通过 DNS 解析一条 TXT 记录来验证。 但是我们在整个安装和生成过程并没有看到啥时候添加了TXT记录,其实有的,如果在安装过程中仔细看日志,就能看到先是 Add 然后 Check 最后 Remove 。

因为我这域名在阿里云购买的,阿里云给域名添加解析能看到记录,自己去登录控制台查看域名的解析记录就会发现。下图是我的。

证书续期

Let's Encrypt 证书的有效期是三个月。但我们通过脚本acme.sh启动就不用担心,因为它写入了定时命令。用 crontab -l 列出定时任务。

后面三个看运行的命令估计与什么日志有关,第一个是我们要看的。从命令看,每天 0 点 13 分这脚本会做点啥事,不知道是重启还是续期之类的,总之不用担心。

好的,一切搞定。替换以前的证书,另开一篇文章吧,如果有需求可以关注。

如果帮到你,麻烦点个赞可以吗。

 

本文由老郭种树原创,转载请注明:https://guozh.net/acme-sh-gen-lets-encrypt-domain-ssl-tutorial/

Let’s Encrypt泛域名证书生成 acme.sh免费申请使用配置 地表最强教程》有12个想法

  1. K

    我在宝塔把证书部署到顶级域名完全没问题,但二级域名之后打开显示的还是连接不安全,这个该怎么解决哇

    回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注