ProHoster > Log > administrasjon > Automatisering av Let's Encrypt SSL-sertifikatadministrasjon ved hjelp av DNS-01 challenge og AWS
Automatisering av Let's Encrypt SSL-sertifikatadministrasjon ved hjelp av DNS-01 challenge og AWS
Innlegget beskriver trinn for å automatisere administrasjonen av SSL-sertifikater fra La oss kryptere CA ved hjelp av DNS-01 utfordring и AWS.
acme-dns-route53 er et verktøy som lar oss implementere denne funksjonen. Den kan fungere med SSL-sertifikater fra Let's Encrypt, lagre dem i Amazon Certificate Manager, bruke Route53 API for å implementere DNS-01-utfordringen, og til slutt, push-varsler til SNS. I acme-dns-route53 Det er også innebygd funksjonalitet for bruk inne i AWS Lambda, og det er dette vi trenger.
Denne artikkelen er delt inn i 4 seksjoner:
lage en zip-fil;
skape en IAM-rolle;
lage en lambda-funksjon som kjører acme-dns-route53;
lage en CloudWatch-timer som utløser en funksjon 2 ganger om dagen;
acme-dns-route53 er skrevet i GoLang og støtter versjon ikke lavere enn 1.9.
Vi må lage en zip-fil med en binær fil acme-dns-route53 innsiden. For å gjøre dette må du installere acme-dns-route53 fra GitHub-depotet ved å bruke kommandoen go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binæren er installert i $GOPATH/bin katalog. Vær oppmerksom på at under installasjonen spesifiserte vi to endrede miljøer: GOOS=linux и GOARCH=amd64. De gjør det klart for Go-kompilatoren at den må lage en binær som passer for Linux OS og amd64-arkitektur - det er dette som kjører på AWS.
AWS forventer at programmet vårt blir distribuert i en zip-fil, så la oss lage acme-dns-route53.zip arkiv som vil inneholde den nylig installerte binære filen:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
OBS: Binærfilen skal være i roten til zip-arkivet. Til dette bruker vi -j flagg.
Nå er zip-kallenavnet vårt klart for distribusjon, alt som gjenstår er å opprette en rolle med de nødvendige rettighetene.
Opprette en IAM-rolle
Vi må sette opp en IAM-rolle med rettighetene som kreves av lambdaen vår under utførelsen.
La oss kalle denne politikken lambda-acme-dns-route53-executor og umiddelbart gi henne en grunnleggende rolle AWSLambdaBasicExecutionRole. Dette vil tillate lambdaen vår å kjøre og skrive logger til AWS CloudWatch-tjenesten.
Først lager vi en JSON-fil som beskriver rettighetene våre. Dette vil i hovedsak tillate lambda-tjenester å bruke rollen lambda-acme-dns-route53-executor:
La oss nå kjøre kommandoen aws iam create-role for å opprette en rolle:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
OBS: husk policyen ARN (Amazon Resource Name) - vi trenger den i de neste trinnene.
rolle lambda-acme-dns-route53-executor opprettet, nå må vi spesifisere tillatelser for det. Den enkleste måten å gjøre dette på er å bruke kommandoen aws iam attach-role-policy, bestått politikk ARN AWSLambdaBasicExecutionRole som følger:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
OBS: en liste med andre retningslinjer kan bli funnet her.
Lage en lambda-funksjon som kjører acme-dns-route53
Hurra! Nå kan du distribuere funksjonen vår til AWS ved å bruke kommandoen aws lambda create-function. Lambdaen må konfigureres ved hjelp av følgende miljøvariabler:
AWS_LAMBDA - gjør det klart acme-dns-route53 at henrettelsen skjer inne i AWS Lambda.
DOMAINS — en liste over domener atskilt med komma.