ProHoster > blog > amministrazione > Automazione della gestione dei certificati SSL Let's Encrypt utilizzando la sfida DNS-01 e AWS
Automazione della gestione dei certificati SSL Let's Encrypt utilizzando la sfida DNS-01 e AWS
Il post descrive i passaggi per automatizzare la gestione dei certificati SSL da Crittografiamo CA utilizzando Sfida DNS-01 и AWS.
acme-dns-route53 è uno strumento che ci permetterà di implementare questa funzionalità. Può funzionare con i certificati SSL di Let's Encrypt, salvarli in Amazon Certificate Manager, utilizzare l'API Route53 per implementare la sfida DNS-01 e, infine, inviare notifiche a SNS. IN acme-dns-route53 Sono inoltre disponibili funzionalità integrate da utilizzare all'interno di AWS Lambda e questo è ciò di cui abbiamo bisogno.
Questo articolo è diviso in 4 sezioni:
creazione di un file zip;
creazione di un ruolo IAM;
creando una funzione lambda che viene eseguita acme-dns-route53;
creazione di un timer CloudWatch che attiva una funzione 2 volte al giorno;
acme-dns-route53 è scritto in GoLang e supporta la versione non inferiore alla 1.9.
Dobbiamo creare un file zip con un binario acme-dns-route53 dentro. Per fare ciò è necessario installare acme-dns-route53 dal repository GitHub utilizzando il comando go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
Il binario è installato in $GOPATH/bin directory. Tieni presente che durante l'installazione abbiamo specificato due ambienti modificati: GOOS=linux и GOARCH=amd64. Chiedono chiaramente al compilatore Go che deve creare un file binario adatto al sistema operativo Linux e all'architettura amd64: questo è ciò che viene eseguito su AWS.
AWS prevede che il nostro programma venga distribuito in un file zip, quindi creiamo acme-dns-route53.zip archivio che conterrà il binario appena installato:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Nota: Il file binario dovrebbe trovarsi nella radice dell'archivio zip. Per questo usiamo -j bandiera.
Ora il nostro nickname zip è pronto per l'implementazione, non resta che creare un ruolo con i diritti necessari.
Creazione di un ruolo IAM
Dobbiamo impostare un ruolo IAM con i diritti richiesti dal nostro lambda durante la sua esecuzione.
Chiamiamo questa politica lambda-acme-dns-route53-executor e darle subito un ruolo fondamentale AWSLambdaBasicExecutionRole. Ciò consentirà al nostro lambda di eseguire e scrivere log nel servizio AWS CloudWatch.
Per prima cosa creiamo un file JSON che descrive i nostri diritti. Ciò consentirà essenzialmente ai servizi lambda di utilizzare il ruolo lambda-acme-dns-route53-executor:
Ora eseguiamo il comando aws iam create-role per creare un ruolo:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Nota: ricorda la policy ARN (Amazon Resource Name): ne avremo bisogno nei passaggi successivi.
Ruolo lambda-acme-dns-route53-executor creato, ora dobbiamo specificarne le autorizzazioni. Il modo più semplice per farlo è usare il comando aws iam attach-role-policy, approvando la policy ARN AWSLambdaBasicExecutionRole следующим обрахом:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Nota: è possibile trovare un elenco con altre politiche qui.
Creazione di una funzione lambda che viene eseguita acme-dns-route53
Evviva! Ora puoi distribuire la nostra funzione su AWS utilizzando il comando aws lambda create-function. La lambda deve essere configurata utilizzando le seguenti variabili di ambiente:
AWS_LAMBDA - chiarisce acme-dns-route53 tale esecuzione avviene all'interno di AWS Lambda.
DOMAINS — un elenco di domini separati da virgole.