ProHoster > Блог > Administrado > Aŭtomatigo de Let's Encrypt SSL-atestadministrado uzante DNS-01-defion kaj AWS
Aŭtomatigo de Let's Encrypt SSL-atestadministrado uzante DNS-01-defion kaj AWS
La afiŝo priskribas paŝojn por aŭtomatigi la administradon de SSL-atestiloj de Ni Ĉifri CA uzante DNS-01 defio и AWS.
acme-dns-itinero53 estas ilo, kiu permesos al ni efektivigi ĉi tiun funkcion. Ĝi povas funkcii kun SSL-atestiloj de Let's Encrypt, konservi ilin en Amazon Certificate Manager, uzi la Route53 API por efektivigi la DNS-01-defion, kaj, finfine, puŝi sciigojn al SNS. EN acme-dns-itinero53 Ankaŭ ekzistas enkonstruita funkcieco por uzo ene de AWS Lambda, kaj ĉi tion ni bezonas.
Ĉi tiu artikolo estas dividita en 4 sekciojn:
kreante zip-dosieron;
kreante IAM-rolon;
kreante lambda funkcio kiu funkcias acme-dns-itinero53;
kreante CloudWatch-tempigilon, kiu ekigas funkcion 2 fojojn tage;
acme-dns-route53 estas skribita en GoLang kaj subtenas version ne pli malaltan ol 1.9.
Ni devas krei zip-dosieron kun duuma acme-dns-route53 interne. Por fari tion, vi devas instali acme-dns-route53 de GitHub-deponejo uzante la komandon go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
La binaro estas instalita en $GOPATH/bin dosierujo. Bonvolu noti, ke dum instalado ni specifis du ŝanĝitajn mediojn: GOOS=linux и GOARCH=amd64. Ili klarigas al la Go-kompililo, ke ĝi bezonas krei binaron taŭgan por Linukso OS kaj arkitekturo amd64 - jen kio funkcias per AWS.
AWS atendas, ke nia programo estos deplojita en zip-dosiero, do ni kreu acme-dns-route53.zip arkivo kiu enhavos la lastatempe instalitan binaron:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Noto: La duuma devus esti en la radiko de la zip-arkivo. Por tio ni uzas -j flago.
Nun nia zip-alnomo estas preta por deplojo, restas nur krei rolon kun la necesaj rajtoj.
Kreante IAM-rolon
Ni devas starigi IAM-rolon kun la rajtoj postulitaj de nia lambda dum ĝia ekzekuto.
Ni nomu ĉi tiun politikon lambda-acme-dns-route53-executor kaj tuj donu al ŝi bazan rolon AWSLambdaBasicExecutionRole. Ĉi tio permesos al nia lambda funkcii kaj skribi protokolojn al la AWS CloudWatch-servo.
Unue, ni kreas JSON-dosieron, kiu priskribas niajn rajtojn. Ĉi tio esence permesos al lambda servoj uzi la rolon lambda-acme-dns-route53-executor:
Nun ni rulu la komandon aws iam create-role krei rolon:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Noto: memoru la politikon ARN (Amazon Resource Name) - ni bezonos ĝin en la sekvaj paŝoj.
La rolo de lambda-acme-dns-route53-executor kreita, nun ni devas specifi permesojn por ĝi. La plej facila maniero fari tion estas uzi la komandon aws iam attach-role-policy, pasante politikon ARN AWSLambdaBasicExecutionRole kiel sekvas:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Kreante lambda funkcio kiu funkcias acme-dns-itinero53
Hura! Nun vi povas disfaldi nian funkcion al AWS uzante la komandon aws lambda create-function. La lambda devas esti agordita uzante la sekvajn mediovariablojn:
AWS_LAMBDA — klarigas acme-dns-itinero53 tiu ekzekuto okazas ene de AWS Lambda.
DOMAINS — listo de domajnoj apartigitaj per komoj.