ProHoster > Blog > administracja > Automatyzacja zarządzania certyfikatami Let's Encrypt SSL przy użyciu wyzwania DNS-01 i AWS
Automatyzacja zarządzania certyfikatami Let's Encrypt SSL przy użyciu wyzwania DNS-01 i AWS
W poście opisano kroki umożliwiające automatyzację zarządzania certyfikatami SSL z Zaszyfrujmy CA za pomocą Wyzwanie DNS-01 и AWS.
acme-dns-route53 to narzędzie, które pozwoli nam wdrożyć tę funkcję. Może współpracować z certyfikatami SSL z Let's Encrypt, zapisywać je w Menedżerze certyfikatów Amazon, wykorzystywać API Route53 do realizacji wyzwania DNS-01 i wreszcie wysyłać powiadomienia push do SNS. W acme-dns-route53 Istnieje również wbudowana funkcjonalność do wykorzystania wewnątrz AWS Lambda i właśnie tego potrzebujemy.
Artykuł jest podzielony na 4 sekcje:
tworzenie pliku ZIP;
utworzenie roli IAM;
utworzenie działającej funkcji lambda acme-dns-route53;
utworzenie timera CloudWatch, który uruchamia funkcję 2 razy dziennie;
acme-dns-route53 jest napisany w GoLang i obsługuje wersję nie niższą niż 1.9.
Musimy utworzyć plik zip z plikiem binarnym acme-dns-route53 wewnątrz. Aby to zrobić, musisz zainstalować acme-dns-route53 z repozytorium GitHub za pomocą polecenia go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Plik binarny jest zainstalowany w $GOPATH/bin informator. Należy pamiętać, że podczas instalacji określiliśmy dwa zmienione środowiska: GOOS=linux и GOARCH=amd64. Wyjaśniają kompilatorowi Go, że musi utworzyć plik binarny odpowiedni dla systemu operacyjnego Linux i architektury amd64 - to właśnie działa na AWS.
AWS oczekuje, że nasz program zostanie wdrożony w pliku zip, więc utwórzmy acme-dns-route53.zip archiwum, które będzie zawierać nowo zainstalowany plik binarny:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Uwaga: Plik binarny powinien znajdować się w katalogu głównym archiwum zip. Do tego używamy -j flaga.
Teraz nasz pseudonim zip jest gotowy do wdrożenia, pozostaje tylko utworzyć rolę z niezbędnymi uprawnieniami.
Tworzenie roli IAM
Musimy ustawić rolę IAM z uprawnieniami wymaganymi przez naszą lambdę podczas jej wykonywania.
Nazwijmy tę politykę lambda-acme-dns-route53-executor i od razu daj jej podstawową rolę AWSLambdaBasicExecutionRole. Umożliwi to naszej lambdzie uruchamianie i zapisywanie logów do usługi AWS CloudWatch.
Najpierw tworzymy plik JSON opisujący nasze prawa. Zasadniczo umożliwi to usługom lambda korzystanie z tej roli lambda-acme-dns-route53-executor:
Teraz uruchommy polecenie aws iam create-role aby utworzyć rolę:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Uwaga: pamiętaj o polityce ARN (Amazon Resource Name) - będzie nam potrzebna w kolejnych krokach.
Rola lambda-acme-dns-route53-executor utworzony, teraz musimy określić dla niego uprawnienia. Najłatwiej to zrobić za pomocą polecenia aws iam attach-role-policy, uchwalenie polityki ARN AWSLambdaBasicExecutionRole w następujący sposób:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Tworzenie działającej funkcji lambda acme-dns-route53
Brawo! Teraz możesz wdrożyć naszą funkcję w AWS za pomocą polecenia aws lambda create-function. Lambdę należy skonfigurować przy użyciu następujących zmiennych środowiskowych:
AWS_LAMBDA – wyjaśnia acme-dns-route53 wykonanie to odbywa się wewnątrz AWS Lambda.