打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
折腾Let's Encrypt免费通配符证书的自动更新

Let's Encrypt免费证书我想大家应该不陌生了;

最近几年的免费证书,基本上都是Let's Encrypt和Symantec的免费证书,被拉黑的其它免费证书就不谈了;

赛门铁克(Symantec)的免费证书代理发布在服务运营商手中,所以大家都需要去单独填表申请,还要手动设置dns(阿里云账号一体的可以自动设置)。不过流程并不算复杂,基本上一天内都能拿到证书。

Let's Encrypt的免费证书,是按照安全规范,每次签发有效期为三个月的证书;这两年的工具云集,而大家手上常用的,基本上就是acme.sh和certbot了。

我的博客一直是用Let's Encrypt证书,早期使用acme.sh初期版本,各种折腾;后来发现了更加快捷方便的certbot;至于证书的更新,基本上都是手动renew...虽然可以设置定时任务,但使用域名+ip的验证方法,需要停443端口的占用;使用DNS的方法,DNS的TXT记录有可能会出现更新。。。真是烦躁;后来也懒得去折腾其它的自动更新证书方案;

早在去年就听说Let's Encrypt会在2018年推出通配符证书,就一直在等今年推出新的方案以后,把证书更新的方案改了。

什么是通配符证书?

话题就要说到,Let's Encrypt证书和其它免费证书的区别。

例如赛门铁克的免费证书是单域名证书,就是只能申请一个主机域名;附赠www的主机名,例如申请domain.com的证书,会有备用的www.domain.com;如果abc.domain.com域名使用这个证书,就会导致签名验证失败,浏览器不能正常访问网站。

而Let's Encrypt的免费证书是多域名证书,只需要在申请时,将想要一起签名的域名设置到配置中即可。

而通配符证书,我们只需要设置一个*.domain.com域名,那么之后的a.domain.com,b.domain.com等等,都可以使用这个证书进行加密;

回到文章想说的话题,其实在通配符证书上线前,acme.sh已经推出了基于DNS服务器API,自动更新DNS记录和自动更新证书的方案。但我没有去折腾,直到最近才看到lnmp一键包推出了自动更新通配符证书的方案,我才开始准备折腾。

关于lnmp一键包的自动更新方案是属于lnmp一键包环境下的,所以我这里不细谈这个折腾的过程,因为lnmp的集成,这个操作韩式蛮简单的。戳这里查看相关教程

因为有一些环境,我并没有采用lnmp一键包,所以我根据教程中提到的acme.sh,折腾了一下。


PS:我的运行环境是ubuntu 16.04,不代表大家都是一样的效果。

官方中文文档:https://github.com/Neilpang/acme.sh/wiki/说明 

第一步,下载脚本;

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

安装脚本时会出现个别情况,例如提示openssl没有安装,执行相关语句安装即可;例如apt install openssl

进入下载的脚本文件夹,按照官方中文文档的提示,我们创建一个bash命令的别名;

cd ~/.acme.sh/alias acme.sh=~/.acme.sh/acme.sh

第二步,生成证书;

在生成证书前,设置对应dns服务商的api授权配置;

可以在这个链接查找对应的dns服务商:https://github.com/Neilpang/acme.sh/tree/master/dnsapi 

例如,我是阿里云的dns,先在bash里面通过export设置;

export Ali_Key="xxx"export Ali_Secret="xxx"

其中的xxx自行替换成对应的内容。

acme.sh --issue --dns dns_ali -d domain.com

如果key和secret没有问题,就会执行一个120秒的等待生效时间。

申请成功示意图


第三步,安装证书;

基于acme.sh的开发规划,默认生成的证书是可能会出现目录结构变化的,所以需要将证书自动安装到对应文件夹。

目录的设计根据自己的需求来确定,acme.sh提供的脚本没有自动mkdir,需要手动创建出对应目录。

acme.sh --installcert -d domain.com         --key-file /home/ssl/domain.com/domain.com.key         --fullchain-file /home/ssl/domain.com/fullchain.cer         --reloadcmd "service nginx reload"

最后的reloadcmd里面,service nginx reload在我版本中是可以生效的,部分版本需要使用service nginx force-reload;大家配完证书自己测试,按需使用;

第四步,部署证书;

证书的部署,根据不同的web服务器,有不同配置方法;

我给一个nginx的证书配置例子,没有加入HSTS的,安全评级在A的样子。

server    {        listen 443 ssl http2;        ssl                          on;        server_name                  domain.com;        server_tokens                off;                ssl_certificate              /home/ssl/domain.com/fullchain.cer;        ssl_certificate_key          /home/ssl/domain.com/domain.com.key;                ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;        ssl_protocols                TLSv1 TLSv1.1 TLSv1.2;        ssl_prefer_server_ciphers    on;        ssl_session_cache            builtin:1000 shared:SSL:10m;        ssl_session_timeout          1d;        ssl_session_tickets          on;                location / {            proxy_http_version       1.1;            proxy_ignore_headers     Set-Cookie;            proxy_pass               http://127.0.0.1:8081;        }    }

配置仅供参考,不代表运行就可以使用,是否采用反向代理,根据自己的情况定夺。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
申请Let''''s Encrypt通配符HTTPS证书
免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置SSL2
Linux下使用acme.sh申请和管理Let’s Encrypt证书
申请 Let''''s Encrypt 通配符 HTTPS 证书 | 分享自为知笔记
使用 acme.sh 和 DNSPod 配置和自动更新 Let's Encrypt 证书 | Eth...
https免费泛域名证书申请
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服