这博客越来越卡,从统计数据了解到跳出率差不多 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/
按这教程操作了,但没成功的样子是为什么哇
哎,我这样回复你 估计你也看不到了。有视频 ,可以参考视频和文章
神奇的是,我看到了。我去翻视频看看,不信回来再问。
呃 没想到~
你好博主 一个服务器可以申请多个证书并续期吗 比如 1.com 2.com
我在宝塔把证书部署到顶级域名完全没问题,但二级域名之后打开显示的还是连接不安全,这个该怎么解决哇
因为你的网页里有http
按这个成功了,这个SH 有路由器版吗?
这我倒是不知道咯
我这边是443拒绝链接
这个博客写的对于新手太不友好了,配置API根本看不懂, 😥
这只是申请,下一步部署在哪里。。我要去部署群晖。。。。。。emo