Week19 - 用Let's Encrypt来为你的网站设定免费的SSL保护吧 - Auto-Renew篇

本文章同时发布于:

MediumiT邦帮忙

大家好,继上篇Week18 - 用Let's Encrypt来为你的网站设定免费的SSL保护吧 - 实作篇实作Let's Encrypt取得凭证的方式后,但家有没有发现,Let's Encrypt的凭证有效期限非常短只有三个月,如果每三个月就要手动换一次会很麻烦,所以Let's Encrypt有提供自动更新凭证的功能 - Auto-Renew。

我们这次将实作Auto-Renew配合AWS的CLI来更新凭证。

你需要準备

AWS的EC2AWS的Certificate Manager:用来管理上传的凭证AWS的AIM:新增权限,让AWS CLI可以上传凭证AWS CLI:用来上传凭证

整体流程

验证上由于多了一个Load Balancer,所以会複杂些。

与上篇最大的不同,就是不再是直接将DNS指向EC2的Instance,而是指向Load Balancer。

并透过Load Balancer作分流导向EC2的验证Instance,而Instance验证完毕后会将凭证上传至Load Balancer。最后设定Crontab来定时执行这些验证,以自动化取得与更新凭证。

开始实作

首先,将Load Balancer的DNS name複製至DNS网站上,并设定CNAME纪录

创建Target group,让此Target group会把request导向Instance的3002 port,

将Target group挂载至Load Balancer,这边即是设定当request网址为api.messfar.com,就将request导至刚刚所设的Target group


将Instance挂载至Target groupt


将request的导向设定完毕后,我们需要创建AIM来让收到此request的Instance有能力透过AWS CLI来上传凭证,所以我们这边就到IAM页面来创建此使用者

勾选程式设计方式存取

由于目前的情境不複杂,我们直接选取直接连接现有政策,并勾选AWSCertificateManagerFullAccess

以下我都没有特别设定,直接一路点下一步


複製存取金钥ID私密存取金钥,稍后设定AWS CLI会使用到

接下来与上篇相同,我们连入此Instance然后透过CertBot验证


验证完毕后,我们设定AWS CLI Configure,并把刚刚複製的存取金钥ID私密存取金钥贴上,并把Load Balancer的区域也打上

接着我们就可以透过AWC CLI上传凭证至AWS的Certificate Manager了

$ sudo ./copyCert.sh api.messfar.com ~/w3school-40-weeks/week19$ ./uploadCert.sh

接着你会得到此凭证的ARN,就是此凭证在AWS的路径,我们在设定定时更新时,需要将ARN打上,才会更新至此凭证

我们将copyCert.shrenewCert.sh设定至Crontab,让自动更新可以定时执行

$ sudo vi /etc/crontab

copyCert.shrenewCert.sh后方的参数分别为

copyCert.sh <你的domain> <你的folder>renewCert.sh <你的domain> <你的folder> <凭证的ARN>

以下是我的凭证的範例

SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name  command to be executed  0  23 *  *  * root       ~/w3school-40-weeks/week19/copyCert.sh api.messfar.com ~/w3school-40-weeks/week19  1  23 *  *  * ec2-user   ~/w3school-40-weeks/week19/renewCert.sh api.messfar.com ~/w3school-40-weeks/week19/ arn:aws:acm:ap-northeast-1:397662572793:certificate/605b09e2-4c57-4c3d-852d-1fa70f08bfb4

把AWS的Certificate Manager挂载至Load Balancer上就可以了,撒花~



谢谢你的阅读,也欢迎分享讨论指证~

参考资料

【SSL 凭证】利用 certbot 自动更新 Let's Encrypt 凭证使用伺服器凭证

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章