ProHoster > Blogs > Administrācija > Let's Encrypt SSL sertifikātu pārvaldības automatizācija, izmantojot DNS-01 izaicinājumu un AWS
Let's Encrypt SSL sertifikātu pārvaldības automatizācija, izmantojot DNS-01 izaicinājumu un AWS
Ziņojumā ir aprakstītas darbības, lai automatizētu SSL sertifikātu pārvaldību no Šifrēsim CA izmantojot DNS-01 izaicinājums и AWS.
acme-dns-route53 ir rīks, kas ļaus mums ieviest šo funkciju. Tas var darboties ar Let's Encrypt SSL sertifikātiem, saglabāt tos Amazon Certificate Manager, izmantot Route53 API, lai īstenotu DNS-01 izaicinājumu, un, visbeidzot, push paziņojumus SNS. IN acme-dns-route53 Ir arī iebūvēta funkcionalitāte lietošanai AWS Lambda iekšpusē, un tas ir tas, kas mums ir nepieciešams.
Šis raksts ir sadalīts 4 sadaļās:
zip faila izveide;
IAM lomas izveide;
izveidojot lambda funkciju, kas darbojas acme-dns-route53;
izveidojot CloudWatch taimeri, kas iedarbina funkciju 2 reizes dienā;
acme-dns-route53 ir rakstīts GoLang un atbalsta versiju, kas nav zemāka par 1.9.
Mums ir jāizveido zip fails ar bināro failu acme-dns-route53 iekšā. Lai to izdarītu, jums ir jāinstalē acme-dns-route53 no GitHub repozitorija, izmantojot komandu go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binārais fails ir instalēts $GOPATH/bin direktoriju. Lūdzu, ņemiet vērā, ka instalēšanas laikā mēs norādījām divas mainītas vides: GOOS=linux и GOARCH=amd64. Viņi Go kompilatoram skaidri norāda, ka tam ir jāizveido binārs, kas piemērots Linux OS un amd64 arhitektūrai — tas ir tas, kas darbojas AWS.
AWS sagaida, ka mūsu programma tiks izvietota zip failā, tāpēc izveidosim acme-dns-route53.zip arhīvs, kurā būs tikko instalētais binārais fails:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Piezīme: Binārajam failam ir jāatrodas zip arhīva saknē. Šim nolūkam mēs izmantojam -j karogs.
Tagad mūsu zip segvārds ir gatavs izvietošanai, atliek tikai izveidot lomu ar nepieciešamajām tiesībām.
IAM lomas izveide
Mums ir jāiestata IAM loma ar tiesībām, ko pieprasa mūsu lambda tās izpildes laikā.
Sauksim šo politiku lambda-acme-dns-route53-executor un nekavējoties piešķir viņai pamata lomu AWSLambdaBasicExecutionRole. Tas ļaus mūsu lambda darboties un rakstīt žurnālus AWS CloudWatch pakalpojumā.
Pirmkārt, mēs izveidojam JSON failu, kurā aprakstītas mūsu tiesības. Tas būtībā ļaus lambda pakalpojumiem izmantot lomu lambda-acme-dns-route53-executor:
Tagad izpildīsim komandu aws iam create-role lai izveidotu lomu:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Piezīme: atcerieties politiku ARN (Amazon Resource Name) — tā mums būs nepieciešama nākamajās darbībās.
Loma lambda-acme-dns-route53-executor izveidots, tagad mums ir jānorāda tam atļaujas. Vienkāršākais veids, kā to izdarīt, ir izmantot komandu aws iam attach-role-policy, nokārtojot ARN politiku AWSLambdaBasicExecutionRole šādi:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Piezīme: sarakstu ar citām politikām var atrast šeit.
Tiek izveidota lambda funkcija, kas darbojas acme-dns-route53
Urrā! Tagad jūs varat izvietot mūsu funkciju AWS, izmantojot komandu aws lambda create-function. Lambda ir jākonfigurē, izmantojot šādus vides mainīgos:
AWS_LAMBDA - padara to skaidru acme-dns-route53 ka izpilde notiek AWS Lambda iekšpusē.