ProHoster > Blogi > antaminen > Let's Encrypt SSL-sertifikaattien hallinnan automatisointi DNS-01-haasteen ja AWS:n avulla
Let's Encrypt SSL-sertifikaattien hallinnan automatisointi DNS-01-haasteen ja AWS:n avulla
Viesti kuvaa vaiheita SSL-varmenteiden hallinnan automatisoimiseksi Salataan CA käyttämällä DNS-01-haaste и AWS.
acme-dns-route53 on työkalu, jonka avulla voimme toteuttaa tämän ominaisuuden. Se voi toimia Let's Encryptin SSL-sertifikaattien kanssa, tallentaa ne Amazon Certificate Manageriin, käyttää Route53 API:ta DNS-01-haasteen toteuttamiseen ja lopuksi push-ilmoituksia SNS:lle. SISÄÄN acme-dns-route53 AWS Lambdan sisällä on myös sisäänrakennettu toiminnallisuus, ja tätä me tarvitsemme.
Tämä artikkeli on jaettu 4 osaan:
zip-tiedoston luominen;
IAM-roolin luominen;
luomalla toimivan lambda-funktion acme-dns-route53;
CloudWatch-ajastimen luominen, joka käynnistää toiminnon 2 kertaa päivässä;
Huomautus: Ennen kuin aloitat, sinun on asennettava GoLang 1.9+ и AWS CLI
Zip-tiedoston luominen
acme-dns-route53 on kirjoitettu GoLangissa ja se tukee vähintään 1.9:ää.
Meidän on luotava zip-tiedosto, jossa on binääri acme-dns-route53 sisällä. Tätä varten sinun on asennettava acme-dns-route53 GitHub-arkistosta komennolla go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binaari on asennettu sisään $GOPATH/bin hakemistosta. Huomaa, että määritimme asennuksen aikana kaksi muuttunutta ympäristöä: GOOS=linux и GOARCH=amd64. Ne tekevät Go-kääntäjälle selväksi, että sen on luotava Linux-käyttöjärjestelmälle ja amd64-arkkitehtuurille sopiva binaari - tämä toimii AWS:ssä.
AWS odottaa, että ohjelmamme otetaan käyttöön zip-tiedostona, joten luodaan acme-dns-route53.zip arkisto, joka sisältää juuri asennetun binaarin:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Huomautus: Binaaritiedoston tulee olla zip-arkiston juuressa. Tätä varten käytämme -j lippu.
Nyt zip-lempinimemme on valmis käyttöönotettavaksi, jäljellä on vain luoda rooli, jolla on tarvittavat oikeudet.
IAM-roolin luominen
Meidän on määritettävä IAM-rooli, jolla on lambdamme edellyttämät oikeudet sen suorittamisen aikana.
Kutsutaan tätä politiikkaa lambda-acme-dns-route53-executor ja anna hänelle välittömästi perusrooli AWSLambdaBasicExecutionRole. Näin lambdamme voi suorittaa ja kirjoittaa lokeja AWS CloudWatch -palveluun.
Ensin luomme JSON-tiedoston, joka kuvaa oikeuksiamme. Tämä antaa olennaisesti lambda-palveluille mahdollisuuden käyttää roolia lambda-acme-dns-route53-executor:
Suoritetaan nyt komento aws iam create-role roolin luominen:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Huomautus: muista käytäntö ARN (Amazon Resource Name) - tarvitsemme sitä seuraavissa vaiheissa.
Rooli lambda-acme-dns-route53-executor luotu, nyt meidän on määritettävä sen käyttöoikeudet. Helpoin tapa tehdä tämä on käyttää komentoa aws iam attach-role-policy, läpäisee ARN-käytännön AWSLambdaBasicExecutionRole seuraavasti:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Huomautus: löytyy luettelo muista käytännöistä täällä.
Lambda-funktion luominen, joka toimii acme-dns-route53
Hurraa! Nyt voit ottaa toimintomme käyttöön AWS:ssä komennolla aws lambda create-function. Lambda on määritettävä käyttämällä seuraavia ympäristömuuttujia:
AWS_LAMBDA - tekee selväksi acme-dns-route53 että suoritus tapahtuu AWS Lambdan sisällä.
DOMAINS — luettelo verkkotunnuksista pilkuilla erotettuina.