ProHoster > Blog > Uprava > Avtomatizacija upravljanja s certifikati Let's Encrypt SSL z uporabo DNS-01 challenge in AWS
Avtomatizacija upravljanja s certifikati Let's Encrypt SSL z uporabo DNS-01 challenge in AWS
V objavi so opisani koraki za avtomatizacijo upravljanja potrdil SSL iz Let's Encrypt CA uporabo DNS-01 izziv и AWS.
acme-dns-route53 je orodje, ki nam bo omogočilo implementacijo te funkcije. Lahko deluje s potrdili SSL podjetja Let's Encrypt, jih shrani v Amazon Certificate Manager, uporabi API Route53 za implementacijo izziva DNS-01 in končno pošlje obvestila v SNS. IN acme-dns-route53 Obstaja tudi vgrajena funkcionalnost za uporabo znotraj AWS Lambda in to je tisto, kar potrebujemo.
Ta članek je razdeljen na 4 dele:
ustvarjanje zip datoteke;
ustvarjanje vloge IAM;
ustvarjanje funkcije lambda, ki teče acme-dns-route53;
ustvarjanje časovnika CloudWatch, ki sproži funkcijo 2-krat na dan;
acme-dns-route53 je napisan v GoLang in podpira različico, ki ni nižja od 1.9.
Ustvariti moramo datoteko zip z dvojiško datoteko acme-dns-route53 znotraj. Če želite to narediti, morate namestiti acme-dns-route53 iz repozitorija GitHub z ukazom go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binarna datoteka je nameščena v $GOPATH/bin imenik. Upoštevajte, da smo med namestitvijo določili dve spremenjeni okolji: GOOS=linux и GOARCH=amd64. Prevajalniku Go pojasnijo, da mora ustvariti binarno datoteko, primerno za OS Linux in arhitekturo amd64 - to je tisto, kar deluje na AWS.
AWS pričakuje, da bo naš program nameščen v datoteki zip, zato ustvarjajmo acme-dns-route53.zip arhiv, ki bo vseboval novo nameščeno dvojiško datoteko:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Opomba: Binarna datoteka mora biti v korenu arhiva zip. Za to uporabljamo -j zastava.
Zdaj je naš vzdevek zip pripravljen za uvedbo, vse kar ostane je ustvariti vlogo s potrebnimi pravicami.
Ustvarjanje vloge IAM
Nastaviti moramo vlogo IAM s pravicami, ki jih zahteva naša lambda med njenim izvajanjem.
Recimo temu pravilnik lambda-acme-dns-route53-executor in ji takoj dodelite osnovno vlogo AWSLambdaBasicExecutionRole. To bo naši lambdi omogočilo izvajanje in pisanje dnevnikov v storitev AWS CloudWatch.
Najprej ustvarimo datoteko JSON, ki opisuje naše pravice. To bo v bistvu omogočilo storitvam lambda uporabo te vloge lambda-acme-dns-route53-executor:
Zdaj pa zaženimo ukaz aws iam create-role ustvariti vlogo:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Opomba: zapomnite si pravilnik ARN (Amazon Resource Name) – potrebovali ga bomo v naslednjih korakih.
Vloga lambda-acme-dns-route53-executor ustvarjen, zdaj moramo zanj določiti dovoljenja. Najlažji način za to je uporaba ukaza aws iam attach-role-policy, prehodni pravilnik ARN AWSLambdaBasicExecutionRole kot sledi:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Opomba: najdete seznam z drugimi politikami tukaj.
Ustvarjanje lambda funkcije, ki teče acme-dns-route53
Hura! Zdaj lahko z ukazom razmestite našo funkcijo v AWS aws lambda create-function. Lambda mora biti konfigurirana z uporabo naslednjih spremenljivk okolja:
AWS_LAMBDA - pojasnjuje acme-dns-route53 da se izvršitev zgodi znotraj AWS Lambda.