宝塔面板6.x申请Let’s Encrypt泛域名证书教程
宝塔面板Linux平台的6.x版本已经发布,但对于Let’s Encrypt泛域名证书的支持貌似还没有完美解决,例如阿里云的DNS就不支持泛域名证书申请,笔者通过宝塔面板6.21测试几次都失败了。泛域名是类似*.zhanzhangb.com这样的域名证书,Let’s Encrypt官方早已经宣布支持了,LNMP已经在去年发布的1.4版中支持一键申请与自动续期。
Let’s Encrypt是免费SSL证书中最棒的,也是站长帮网站采用的证书(LNMP1.5一键申请的Let’s Encrypt泛域名证书),同时也极力推荐给各位站长。
Let’s Encrypt唯一的缺点是证书只有90天有效期,所以实现自动续期是很多站长希望的。
宝塔面板预计后续会提供吧,目前宝塔面板通过文件验证方式申请Let’s Encrypt单域名证书并自动续期是没问题的。本文将介绍一种方式在宝塔面板中实现Let’s Encrypt泛域名证书申请及自动续期,其实宝塔面板已经安装了acme.sh,所以安装acme.sh的步骤可以跳过。
通过acme申请Let’s Encrypt证书支持的域名DNS服务商有以下这些(国内用户较多的):cloudxns、dnspod、aliyun(阿里云)、cloudflare、linode、he、digitalocean、namesilo、aws、namecom、freedns、godaddy、yandex。
下面以阿里云为例,先登陆阿里云,查看API KEY和SECRTET KEY,网址是:https://ak-console.aliyun.com/#/accesskey
然后在宝塔面板中找到:宝塔SSH终端
输入以下指令:export Ali_Key="123456"
export Ali_Secret="abcdef"
其中的KEY和Secret的值请替换成自己的。
执行完这两条指令后,开始签发证书并设置自动续期,执行:
~/.acme.sh/acme.sh --issue -d zhanzhangb.com -d *.zhanzhangb.com --dns dns_Ali
记住,替换成自己的域名哦,后面的dns_Ali代表是阿里云DNS。如果是其它DNS,请继续往下看。
如果未提示错误,就申请成功了。根据提示,找到证书所在目录,大概应该是:/www/server/panel/vhost/cert/域名目录下,用Notepad++打开fullchain.cer(证书文件)与zhanzhangb.com.key(密钥文件)两个文件,将文件内容复制粘贴到宝塔面板——网站——设置——SSL——其它证书,如下图:

然后在证书夹中可以看到刚申请的证书,点击部署后,即可开启HTTPS了。这个时候宝塔面板用的证书不会实现自动续期,因为自动续期的证书是/www/server/panel/vhost/cert/域名目录下的,而不是我们粘贴出来的这个。所以需要修改一下网站配置文件,将里面的证书路径修改一下。
ssl_certificate /www/server/panel/vhost/cert/zhanzhangb.com/fullchain.cer;
ssl_certificate_key /www/server/panel/vhost/cert/zhanzhangb.com/zhanzhangb.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
ssl_certificate和ssl_certificate_key的路径要改成自己的证书实际路径,千万别填错了,否则会造成无法访问。
到此完成了所有操作,实现了Let’s Encrypt泛域名证书和自动续期。检查是否自动续期成功,可以在宝塔面板SSH终端中执行crontab -l
命令查看,如下图:

如果出现以上内容说明自动续期已设置,如果没有任何内容,也可以手动添加。宝塔面板——计划任务——Shell脚本:acme.sh --renew -d example.com -d *.example.com --force
,如下图:

阿里云DNS之外的域名DNS实现方式:
cloudxns:服务商简称cx,所需的API参数:export CX_Key=”123456″ export CX_Secret=”abcdef” 获取API参数地址:https://www.cloudxns.net/AccountManage/apimanage.html 示例:文中提到的export Ali_Key=”123456″改成:CX_Key=”123456″,~/.acme.sh/acme.sh –issue -d zhanzhangb.com -d *.zhanzhangb.com –dns dns_Ali改成:~/.acme.sh/acme.sh –issue -d zhanzhangb.com -d *.zhanzhangb.com –dns dns_CX
dnspod (大陆版):服务商简称dp,所需的API参数:export DP_Id=”123456″ export DP_Key=”abcdef”
更多DNS支持信息请查看:https://github.com/Neilpang/acme.sh/tree/master/dnsapi