ProHoster > Blog > Pangangasiwa > Automation ng Let's Encrypt SSL certificate management gamit ang DNS-01 challenge at AWS
Automation ng Let's Encrypt SSL certificate management gamit ang DNS-01 challenge at AWS
Inilalarawan ng post ang mga hakbang upang i-automate ang pamamahala ng mga SSL certificate mula sa I-encrypt natin ang CA gamit DNS-01 hamon ΠΈ AWS.
acme-dns-route53 ay isang tool na magpapahintulot sa amin na ipatupad ang feature na ito. Maaari itong gumana sa mga SSL certificate mula sa Let's Encrypt, i-save ang mga ito sa Amazon Certificate Manager, gamitin ang Route53 API para ipatupad ang DNS-01 challenge, at, sa wakas, push notifications sa SNS. SA acme-dns-route53 Mayroon ding built-in na functionality para sa paggamit sa loob ng AWS Lambda, at ito ang kailangan namin.
Ang artikulong ito ay nahahati sa 4 na seksyon:
paglikha ng isang zip file;
paglikha ng tungkulin ng IAM;
paglikha ng isang lambda function na tumatakbo acme-dns-route53;
paggawa ng CloudWatch timer na nagti-trigger ng function 2 beses sa isang araw;
tandaan: Bago ka magsimula kailangan mong i-install GoLang 1.9+ ΠΈ AWS CLI
Paglikha ng isang zip file
Ang acme-dns-route53 ay nakasulat sa GoLang at sinusuportahan ang bersyon na hindi bababa sa 1.9.
Kailangan nating lumikha ng isang zip file na may binary acme-dns-route53 sa loob. Upang gawin ito kailangan mong i-install acme-dns-route53 mula sa GitHub repository gamit ang command go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Ang binary ay naka-install sa $GOPATH/bin direktoryo. Pakitandaan na sa panahon ng pag-install, tinukoy namin ang dalawang binagong kapaligiran: GOOS=linux ΠΈ GOARCH=amd64. Nilinaw nila sa Go compiler na kailangan nitong lumikha ng binary na angkop para sa Linux OS at amd64 architecture - ito ang tumatakbo sa AWS.
Inaasahan ng AWS na mai-deploy ang aming programa sa isang zip file, kaya gumawa tayo acme-dns-route53.zip archive na maglalaman ng bagong naka-install na binary:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
tandaan: Ang binary ay dapat nasa ugat ng zip archive. Para dito ginagamit namin -j bandila.
Ngayon ang aming zip nickname ay handa na para sa deployment, ang natitira ay upang lumikha ng isang tungkulin na may mga kinakailangang karapatan.
Paglikha ng tungkulin ng IAM
Kailangan nating mag-set up ng tungkulin ng IAM na may mga karapatan na kinakailangan ng ating lambda sa panahon ng pagpapatupad nito.
Tawagan natin ang patakarang ito lambda-acme-dns-route53-executor at agad na bigyan siya ng pangunahing tungkulin AWSLambdaBasicExecutionRole. Papayagan nito ang aming lambda na tumakbo at magsulat ng mga log sa serbisyo ng AWS CloudWatch.
Una, gumawa kami ng JSON file na naglalarawan sa aming mga karapatan. Ito ay mahalagang magbibigay-daan sa mga serbisyo ng lambda na gamitin ang tungkulin lambda-acme-dns-route53-executor:
Ngayon patakbuhin natin ang utos aws iam create-role upang lumikha ng isang tungkulin:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
tandaan: tandaan ang patakaran ARN (Amazon Resource Name) - kakailanganin natin ito sa mga susunod na hakbang.
Papel lambda-acme-dns-route53-executor nilikha, ngayon kailangan nating tukuyin ang mga pahintulot para dito. Ang pinakamadaling paraan upang gawin ito ay ang paggamit ng command aws iam attach-role-policy, pagpasa sa patakarang ARN AWSLambdaBasicExecutionRole tulad ng sumusunod:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
tandaan: isang listahan na may iba pang mga patakaran ay matatagpuan dito.
Paglikha ng lambda function na tumatakbo acme-dns-route53
Hooray! Ngayon ay maaari mong i-deploy ang aming function sa AWS gamit ang command aws lambda create-function. Dapat na i-configure ang lambda gamit ang mga sumusunod na variable ng kapaligiran:
AWS_LAMBDA - ginagawa itong malinaw acme-dns-route53 ang pagpapatupad na iyon ay nangyayari sa loob ng AWS Lambda.
DOMAINS β isang listahan ng mga domain na pinaghihiwalay ng mga kuwit.