宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

宝塔面板6字数 1523阅读模式

宝塔面板6.X在Let’s Encrypt证书方面终于支持了DNS申请证书了,我们都知道宝塔面板以前只支持用文件验证的方式来申请证书,所以在自动续期方面不是太友好。到期了需要手动申请!

Let’s Encrypt唯一的缺点是证书只有90天有效期,所以实现自动续期是很多站长希望的。这个时候我们就需要用通过acme申请证书了,宝塔面板Linux平台已经跟新到了6.8.8版本了,但对于Let’s Encrypt泛域名证书的支持貌似还没有完美解决!

对于单域名证书的自动续期,宝塔面板在6.8.8已经解决了,我们可以通过DNS验证来解决。宝塔面板也是利用acme.sh来一键申请和安装letsencrypt免费SSL证书,所以宝塔面板也是安装好了acme,所以如何安装大鸟这类就略过不提了。

第一:验证方式

网站管理→设置→ssl 里面,我们可以看到SSL这个功能,我们打开之后可以看到宝塔面板集成了dns验证的方式,所以我们只要用dns验证就可以解决证书自动续期的问题。如图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

在DNS验证中,宝塔提供了3个自动化DNS-API,如图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

Dnspod、阿里云DNS、CloudXns这三个可以自动验证dns,如果不是这三个我们可以用手动解析。

第二:手动解析

大鸟这里用Cloudflare dns来测试。我们选择手动解析。如图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

我们需要到域名出做一个Txt解析。大鸟用Cloudflare dns如下:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

Cloudflare dns解析很快,几乎是秒生效。我们可以立即验证。

第三:内置的DNS接口

如果我们用内置的dnspod,那么就轻松点,只需要选择然后然后验证就可以了。

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

 

使用【DnsPod/阿里云DNS】接口前您需要先在弹出的窗口中设置对应接口的API,我们需要到dnspod→用户中心→安全设置 里面设置一个API Token,如图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

输入API Token和ID之后就可以验证了申请Let’s Encrypt证书了。验证时有点慢,需要等待下。

第四:申请不成功

我们有时候回申请不成功,比如大鸟一开用的是dns.com家的dns来申请,但是总是不成功。如图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

不知道是什么原因,有知道的同学可以告诉大鸟。

第五:检查证书是否自动续期

我们可以用手动解析或者自动化DNS-API来完成证书的申请,由此实现了Let’s Encrypt泛域名证书和自动续期。如果我们需要检查是否自动续期成功,可以在宝塔面板SSH终端中执行crontab -l命令查看,如下图:

宝塔面板6.X-Let’s Encrypt单域名证书自动续期教程

如果在配置Let’s Encrypt证书后,使用crontab -l查看定时任务,没有发现有关ssl证书续期的脚本,我们可以在面板首页点击修复面板然后再执行这条命令,如下:

echo '9 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null' >> /var/spool/cron/root

第六:总结

宝塔面板安装了acme所以我们实现自动续期还是很容易的。所以我们正常的配置是可以实现自动续期的,但是,可能会有些灵异情况,大鸟就是这样设置了,因为面板也就是刚刚推出了这个功能,所以到底能否实现自动续期还未可知。

不过大鸟lnmp环境安装了acme是可以实现证书的自动续期的,宝塔面板估计是没问题。如果需要证书自动续期的朋友,可以试试宝塔面板给出的通过DNS-API这样的方式来实现证书的自动续期。

dnspod (大陆版):服务商简称dp,所需的API参数:

export DP_Id=”123456″

export DP_Key=”123456”

更多DNS支持信息请查看:https://github.com/Neilpang/acme.sh/tree/master/dnsapi

 

weinxin
我的微信
微信公众号
关注大鸟博客公众号
 
大鸟
  • 宝塔面板证书自动续期
  • Lets Encrypt证书自动续期
  • 宝塔面板Lets Encrypt证书自动续期
  • 宝塔面板acme
评论  6  访客  6
    • Jenn
      Jenn 1

      请问大鸟,有空看看宝塔6.8.8的新增网站申请ssl是不是有点更改了?
      我发现用宝塔给新版本以后的let’s encrypt 路径放在伺服器根目录的/.acme.sh了。
      以前好像是放在/www/server/panel/vhost/cert 里面的。
      这个更改导致cronjob里面没有替新网站续约。
      cronjob 默认的是 “/root/.acme.sh”/acme.sh –cron –home “/root/.acme.sh”
      如果我手动跑这个script会发现新网站都没有包含在内。
      我手动跑 “/root/.acme.sh”/acme.sh –cron –home “/.acme.sh” 才会出现我新网站网址在里面。。。
      不确定是我的宝塔问题还是6.8.8问题呢?希望有人注意。
      我来自马来西亚。因为无法注册宝塔账号(没有中国手机号验证),所以没有办法去官方论坛发帖子。。

        • 大鸟
          大鸟

          @ Jenn 我仔细看了宝塔面板6.8.8确实如你说的,宝塔官方更改了路径。证书路径是这样的;/etc/letsencrypt/live/www.daniao.org/fullchain.pem;这个我们可以在网站配置文件里可以看到。如果你喜欢以前的方式,我们需要修改证书路径改为以前的方式如:ssl_certificate /www/server/panel/vhost/cert/www.daniao.org/fullchain.cer;然后可以再用acme申请一次。
          可以在宝塔面板SSH终端中执行crontab -l命令查看。
          如果没有任何内容,也可以手动添加。宝塔面板——计划任务——Shell脚本
          大鸟觉得就是路径问题要解决应该就可以了。

            • Jenn
              Jenn 1

              @ 大鸟 明白大鸟的解说。
              如果我们保持宝塔设定不变的话,nginx证书配置是:
              ssl_certificate /etc/letsencrypt/live/www.daniao.org/fullchain.pem;
              ssl_certificate_key /etc/letsencrypt/live/www.daniao.org/privkey.pem;

              如果我们去看看 /etc/letsencrypt/live/www.daniao.org/fullchain.pem 的话,会发现其实这个只是一个symbolic link (符号链接)。
              6.8.8的我发现它就是指向 /.acme.sh/www.daniao.org/fullchain.cer
              旧版本是指向 /www/server/panel/vhost/cert/www.daniao.org/fullchain.cer

              可是即使我们在网站配置里面手动修改,网站确实是ssl生效,可是因为cron job续约根本没有跑 /.acme.sh/ 这个文件夹,所以任何新网站续约脚本会被忽略掉,如果宝塔没有修复这个问题,3个月后可能网站ssl就会逾期。

              因此,我暂时目前觉得最简单方式是在宝塔创建一个计划来跑/.acme.sh 文件夹的续约。

              下面cronjob例子:
              目前6.8.8版本,如果新添加网站,手动执行cronjob script结果会这样:(完全没有一个站点在跑续约)
              [root@DTMC001 ~]# “/root/.acme.sh”/acme.sh –cron –home “/root/.acme.sh”
              [Mon Feb 11 16:53:35 CST 2019] ===Starting cron===
              [Mon Feb 11 16:53:35 CST 2019] ===End cron===

              如果我手动跑这个就会有一些结果:
              [root@DTMC001 ~]# “/root/.acme.sh”/acme.sh –cron –home “/.acme.sh”
              [Mon Feb 11 16:55:06 CST 2019] ===Starting cron===
              [Mon Feb 11 16:55:06 CST 2019] Renew: ‘xxx.com’
              [Mon Feb 11 16:55:06 CST 2019] Skip, Next renewal time is: Fri Apr 12 07:13:54 UTC 2019
              [Mon Feb 11 16:55:06 CST 2019] Add ‘–force’ to force to renew.
              [Mon Feb 11 16:55:06 CST 2019] Skipped xxx.com
              [Mon Feb 11 16:55:06 CST 2019] ===End cron===

              希望我这个做法可以暂时解决这个问题吧。

          • 大鸟
            大鸟

            我测试了下,确实是你说的这个问题,我自己的也没有跑续约,用你的方法测试下,确实跑到了结果,这个应该是官方自己都没注意的事情,我把这个问题反馈给官方看看!,不过宝塔好用是好用,现在就是小问题一大堆。也欢迎Jenn 常来这里交流宝塔面板的使用心得。

              • Jenn
                Jenn 1

                @ 大鸟 没错,宝塔真的很好用。
                而且还有免费版+一堆实用工具都免费,这才是真的佛心啊。
                不知道宝塔有没有github之类,如果大鸟有的话也来分享下。
                行!我会常上来交流交流。
                可以学习之余又可以帮助同伴。

                  • 大鸟
                    大鸟

                    @ Jenn 呵呵,我自己也非常喜欢用宝塔面板,那就欢迎常来交流喽! :wink: :wink: :wink:

              匿名

              发表评论

              匿名网友

              :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

              确定