Let's Encrypt SSL sertifikatų valdymo automatizavimas naudojant DNS-01 iššūkį ir AWS
Įraše aprašomi žingsniai, kaip automatizuoti SSL sertifikatų valdymą Užšifruokime CA naudojant DNS-01 iššūkis и AWS.
acme-dns-route53 yra įrankis, kuris leis mums įgyvendinti šią funkciją. Jis gali dirbti su SSL sertifikatais iš Let's Encrypt, išsaugoti juos Amazon Certificate Manager, naudoti Route53 API DNS-01 iššūkiui įgyvendinti ir galiausiai siųsti pranešimus SNS. IN acme-dns-route53 Taip pat yra įmontuota funkcija, skirta naudoti AWS Lambda viduje, ir tai yra tai, ko mums reikia.
Šis straipsnis suskirstytas į 4 skyrius:
sukurti zip failą;
sukurti IAM vaidmenį;
sukurti lambda funkciją, kuri veikia acme-dns-route53;
sukurti CloudWatch laikmatį, kuris suaktyvina funkciją 2 kartus per dieną;
acme-dns-route53 yra parašyta GoLang ir palaiko ne žemesnę nei 1.9 versiją.
Turime sukurti zip failą su dvejetainiu acme-dns-route53 viduje. Norėdami tai padaryti, turite įdiegti acme-dns-route53 iš GitHub saugyklos naudodami komandą go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Dvejetainė yra įdiegta $GOPATH/bin katalogas. Atkreipkite dėmesį, kad diegimo metu nurodėme dvi pakeistas aplinkas: GOOS=linux и GOARCH=amd64. Jie aiškiai parodo „Go“ kompiliatoriui, kad jis turi sukurti dvejetainį failą, tinkamą Linux OS ir amd64 architektūrai – būtent tai veikia AWS.
AWS tikisi, kad mūsų programa bus įdiegta ZIP faile, todėl sukurkime acme-dns-route53.zip archyvas, kuriame bus naujai įdiegtas dvejetainis failas:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Pastaba: Dvejetainis failas turėtų būti ZIP archyvo šaknyje. Tam mes naudojame -j vėliava.
Dabar mūsų pašto slapyvardis yra paruoštas naudoti, belieka sukurti vaidmenį su reikiamomis teisėmis.
IAM vaidmens sukūrimas
Turime nustatyti IAM vaidmenį su teisėmis, kurių reikalauja mūsų lambda jo vykdymo metu.
Pavadinkime šią politiką lambda-acme-dns-route53-executor ir iš karto skirkite jai pagrindinį vaidmenį AWSLambdaBasicExecutionRole. Tai leis mūsų lambda paleisti ir rašyti žurnalus į AWS CloudWatch paslaugą.
Pirmiausia sukuriame JSON failą, kuriame aprašomos mūsų teisės. Tai iš esmės leis lambda paslaugoms naudoti vaidmenį lambda-acme-dns-route53-executor:
Dabar vykdykime komandą aws iam create-role sukurti vaidmenį:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Pastaba: prisiminkite politiką ARN (Amazon Resource Name) – jos mums reikės atliekant kitus veiksmus.
Vaidmuo lambda-acme-dns-route53-executor sukurta, dabar turime nurodyti jo teises. Lengviausias būdas tai padaryti yra naudoti komandą aws iam attach-role-policy, perduodamas ARN politika AWSLambdaBasicExecutionRole taip:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Pastaba: galima rasti sąrašą su kitomis taisyklėmis čia.
Veikiančios lambda funkcijos sukūrimas acme-dns-route53
Sveika! Dabar galite įdiegti mūsų funkciją AWS naudodami komandą aws lambda create-function. Lambda turi būti sukonfigūruota naudojant šiuos aplinkos kintamuosius:
AWS_LAMBDA – aiškiai parodo acme-dns-route53 kad vykdymas įvyksta AWS Lambda viduje.