Otomatik jesyon sètifika SSL ann ankripte lè l sèvi avèk defi DNS-01 ak AWS
Pòs la dekri etap pou otomatize jesyon sètifika SSL soti nan Ann ankripte CA lè l sèvi avèk DNS-01 defi и AWS.
acme-dns-route53 se yon zouti ki pral pèmèt nou aplike karakteristik sa a. Li ka travay ak sètifika SSL ki soti nan Let's Encrypt, sove yo nan Amazon Certificate Manager, itilize Route53 API pou aplike defi DNS-01 la, epi finalman, pouse notifikasyon nan SNS. NAN acme-dns-route53 Genyen tou fonksyonalite entegre pou itilize andedan AWS Lambda, e se sa nou bezwen.
Atik sa a divize an 4 seksyon:
kreye yon dosye postal;
kreye yon wòl IAM;
kreye yon fonksyon lambda ki kouri acme-dns-route53;
kreye yon revèy CloudWatch ki deklanche yon fonksyon 2 fwa pa jou;
acme-dns-route53 ekri nan GoLang epi li sipòte vèsyon ki pa pi ba pase 1.9.
Nou bezwen kreye yon fichye postal ak yon binè acme-dns-route53 anndan. Pou fè sa ou bezwen enstale acme-dns-route53 soti nan depo GitHub lè l sèvi avèk lòd la go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Binè a enstale nan $GOPATH/bin anyè. Tanpri sonje ke pandan enstalasyon nou te espesifye de anviwònman chanje: GOOS=linux и GOARCH=amd64. Yo fè li klè pou konpilateur Go a ke li bezwen kreye yon binè apwopriye pou Linux OS ak achitekti amd64 - sa a se sa ki kouri sou AWS.
AWS espere pwogram nou an dwe deplwaye nan yon fichye postal, kidonk ann kreye acme-dns-route53.zip achiv ki pral genyen binè ki fèk enstale:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Remak: Binè a ta dwe nan rasin achiv postal la. Pou sa nou itilize -j drapo.
Koulye a, ti non postal nou an pare pou deplwaman, tout sa ki rete se kreye yon wòl ak dwa ki nesesè yo.
Kreye yon wòl IAM
Nou bezwen mete yon wòl IAM ak dwa lambda nou an egzije pandan egzekisyon li.
Ann rele politik sa a lambda-acme-dns-route53-executor epi imedyatman ba li yon wòl debaz AWSLambdaBasicExecutionRole. Sa a pral pèmèt lambda nou an kouri ak ekri mòso bwa nan sèvis AWS CloudWatch la.
Premyèman, nou kreye yon dosye JSON ki dekri dwa nou yo. Sa a pral esansyèlman pèmèt sèvis lambda yo sèvi ak wòl la lambda-acme-dns-route53-executor:
Koulye a, ann kouri lòd la aws iam create-role pou kreye yon wòl:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Remak: sonje politik ARN (Amazon Resource Name) - nou pral bezwen li nan pwochen etap yo.
Wòl lambda-acme-dns-route53-executor kreye, kounye a nou bezwen presize otorizasyon pou li. Fason ki pi fasil pou fè sa se sèvi ak kòmandman an aws iam attach-role-policy, pase politik ARN AWSLambdaBasicExecutionRole jan sa a:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Remak: ou ka jwenn yon lis ak lòt politik isit la.
Kreye yon fonksyon lambda ki kouri acme-dns-route53
Houra! Koulye a, ou ka deplwaye fonksyon nou an nan AWS lè l sèvi avèk lòd la aws lambda create-function. Lambda a dwe konfigirasyon lè l sèvi avèk varyab anviwònman sa yo:
AWS_LAMBDA - fè li klè acme-dns-route53 ekzekisyon sa a fèt andedan AWS Lambda.