说明:本文为旧文,文中内容可能已失效。如您是 VPS 建站,请自行使用 LNMP 安装包 (https://lnmp.org) 的 lnmp ssl add 命令来安装 SSL 证书。
首先,检查你的 Let's Encrypt 证书是否管理程序是 Certbot(你是否安装了 Certbot)。
执行命令:
find / -name "certbot"
如果找到类似于 /bin/certbot
的结果,那么说明已安装了 Certbot(LNMP 1.4 的 SSL 安装集成进去了,默认是装了的。LNMP1.3 则是以前是老的 lets encrpyt 程序);
如果没有找到,先下载 Certbot 安装 Let's Encrypt 证书。安装 Certbot 并给网站安装 SSL 证书,参考这篇教程:
注意如果你以前用过老的 Let's Encrypt 证书程序,那么要先彻底删除以前老的程序,才能安装 Certbot,不然会出错。逐个执行下面 3 行命令,把 DOMAIN 换成你的域名,如 www.xyz.com(具体是什么可以去/etc/letsencrypt/live 目录下看一下) rm -rf /etc/letsencrypt/live/DOMAIN rm -rf /etc/letsencrypt/renewal/DOMAIN.conf rm -rf /etc/letsencrypt/archive/DOMAIN rm -rf /opt/letsencrypt 即可重新安装 Certbot。
OK,如果你已经安装好了 Certbot,给网站安装好了 SSL 证书,那么进入本篇文章的主题。
一、检查 Cron 服务状态
service crond status
如果执行后提示:crond (pid xxxxx) is running… 代表正常运行中,则可以跳过下面第二、三两步 。
如果提示错误,不识别的服务,则先按照 2)和 3)执行安装和启动。
二、安装 cron 服务
依次输入以下 2 条命令并回车执行
yum -y install vixie-cron yum -y install crontabs
成功安装 Cron 之后,启动 cron 服务。
三、启动 Cron 服务
service crond start
执行后会出现:Starting crond: [ OK ] 的提示,表明启动成功。
继续执行开机启动服务命令,把 Cron 加入开机启动的服务列表中:
chkconfig --level 345 crond on
安装完检查一下 Cron 服务状态
service crond status
如果提示:crond (pid xxxxx) is running… 代表正常运行中。
四、搜索 cron 文件所在位置
输入命令:
find / -name "cron"
找到如下结果:
/var/log/cron 这个是日志文件位置,不管它
/var/spool/cron 这里是所有的自动执行任务的 cron 文件存放位置
用 Xftp 打开 /var/spool/cron,看看 cron 目录下有没有文件。
- 如果没有,创建 cron 文件,按照步骤五。
- 如果有,跳过步骤五。
五、创建 Cron 文件
输入以下命令:
crontab -e
输入此命令后,提示如下:
no crontab for root – using an empty one
此时相当于准备创建一个 root 用户的空白 crontab 文件。直接按住 shift+分号(打出冒号来),然后输入 q,回车。退出编辑文件状态。
此时会提示创建了一个 new crontab (只不过是个空的文件)。接着我们用 Xftp 把 /var/spool/cron
这个路径下生成的名为 root 的文件下载下来,用 Notepad++ 编辑。
六、添加编辑 Certbot 的自动续期命令
在 root cron 文件中,复制以下代码,粘贴,保存,上传。
0 3 */7 * * /bin/certbot renew --renew-hook "/etc/init.d/nginx reload"
以上含义是:每隔 7 天,夜里 3 点整自动执行检查续期命令一次。续期完成后,重启 nginx 服务。
七、重启 Cron 服务,使之生效
service crond restart
重启之后,一切搞定!
八、你想手动尝试 Certbot 证书更新?
一般是直接使用 renew 命令,即:
/bin/certbot renew
但是现在 Certbot 也会自己判断了,没有快到期之前,它也觉得没必要频繁续期。所以看看我们手动去续期的结果:
由于我们之前网站是 2 月 14 日安装的 Let's Encrypt 证书,到 5 月 14 日才到期。现在去 renew 太早了,Certbot 直接把我们给否了。
九、Certbot 到底在证书到期前多久会去续期呢?
可以查看证书的 Renewal 配置文件
在 /etc/letsencrypt/renewal 目录下,有你的网站的 renewal 的配置文件:www.xyz.com.conf
下载到本地,notepad++ 打开,可以看到具体配置信息如下:
从这个文件中我们可以看到,第一行虽然用 # 注释掉不生效了,但是我们可以知道 Certbot 会在证书到期前 30 天开始重新续期。
十、耐心等待验证
到 4 月 15 日以后再看一下证书有没有自动续期即可。
OVER!
喜欢这篇文章的朋友们,不要吝惜你们的赞哦!
本站所有文章除注明“转载”的文章之外,均为原创。未经本站允许,请勿随意转载或用作任何商业用途,否则依法追究侵权者法律责任的权利。
老大,Certbot 的自动续期命令失效了,可以更新一下吗
Sam 老师,renew 命令失效了,提示
-bash: /bin/certbot: No such file or directory
能更新下方法吗?
最后没办法只能删了再重新装
yum -y install vixie-cron
No package vixie-cron available.
Error: Nothing to do
Sam 老师,第二步就报错了。重新装了一遍 Certbot 也不行。
@rex 自己搞定了。
Centos 不同的版本安装命令不一样:
# On CentOS 7 you need to use cronie:
yum install -y cronie
# 启用
systemctl enable crond
systemctl restart crond
然后可以直接跳到第四步继续
@rex 如果是 CentOS 7 的话,
第七步重启 Cron 服务也应用:
systemctl restart crond
想请教下料神和其他大神,之前是通过建站公司搭建的网站,这个 ssl 证书要怎么操作呢?之前对这个不是很懂,看了课程和你的博客,才知道这个要安装 ssl 证书。求指导。谢谢
太强大了!完全只需要复制粘贴!真的只是两天时间,从买到主机到今天完成网站的基本搭建,老师真的是太厉害了!!!当然还要结合着老师的米课课程,才能更系统!
该评论为私密评论
请教料神, wordpress 有没有插件可以自动更新 Let's encrypt 证书? 我现在网站Lightstec试 certbot 自动更新不成功。如果有插件那是很方便。
@Lightstec 我也想知道答案。
按照步骤下来,到这一步输入 /bin/certbot renew 显示 No such file or directory,求大神指教,谢谢!
The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.myweb.com/fullchain.pem expires on 2018-09-18 (skipped)
No renewals were attempted.
显示证书已经更新了,但是我现在打开网页的时候,还是显示证书在之前过期的状态,要怎么修改一下?
@james James, 我之前也一直受这个问题的困扰,明明显示证书没到期,可是网站打开却显示已到期,不安全的链接。
今天误打误撞 关闭 nginx “service nginx stop” 再重启 nginx“service nginx restart”,之后小绿锁正常显示。
不知道这个能不能帮到你。
@小璞叔叔 我按照上面的自动更新的步骤,等到过期都没能更新成功。
于是就按照手动的方法:
1)手动更新“/bin/certbot renew”。
2)关闭 nginx “service nginx stop”。
3)重新 nginx “service nginx restart”.
完成之后,证书日期就更新成功了。
“五、创建 Cron 文件” 我一直创建不了,参考了之前一篇文章之后,发现了“直接按住 shift+分号(打出冒号来),然后输入 q,回车。” 这里应该是输入“wq”,然后问题就解决了。
该评论为私密评论
而且我重新安装 certbot 后还是没有/bin/cerbot 这个文件
删除原文件重新安装 ssl 证书,重启 nginx 后,网站上显示 404not found 然后一个横线 nginx,求大神指教,不知道应该怎么处理