ProHoster > Blog > Administración > Automatización da xestión de certificados SSL de Let's Encrypt mediante o desafío DNS-01 e AWS
Automatización da xestión de certificados SSL de Let's Encrypt mediante o desafío DNS-01 e AWS
A publicación describe os pasos para automatizar a xestión dos certificados SSL desde Imos cifrar CA usando Desafío DNS-01 и AWS.
acme-dns-route53 é unha ferramenta que nos permitirá implementar esta función. Pode funcionar con certificados SSL de Let's Encrypt, gardalos en Amazon Certificate Manager, usar a API Route53 para implementar o desafío DNS-01 e, finalmente, enviar notificacións push a SNS. EN acme-dns-route53 Tamén hai unha funcionalidade integrada para usar dentro de AWS Lambda, e isto é o que necesitamos.
Este artigo está dividido en 4 seccións:
crear un ficheiro zip;
crear un rol IAM;
creando unha función lambda que se execute acme-dns-route53;
crear un temporizador CloudWatch que activa unha función 2 veces ao día;
acme-dns-route53 está escrito en GoLang e admite unha versión non inferior a 1.9.
Necesitamos crear un ficheiro zip cun binario acme-dns-route53 dentro. Para iso cómpre instalar acme-dns-route53 desde o repositorio de GitHub usando o comando go install:
$ env GOOS=linux GOARCH=amd64 go install github.com/begmaroman/acme-dns-route53
O binario está instalado en $GOPATH/bin directorio. Teña en conta que durante a instalación especificamos dous ambientes modificados: GOOS=linux и GOARCH=amd64. Deixan claro ao compilador Go que debe crear un binario axeitado para o sistema operativo Linux e a arquitectura amd64: isto é o que se executa en AWS.
AWS espera que o noso programa se despregue nun ficheiro zip, así que imos crear acme-dns-route53.zip arquivo que conterá o binario recén instalado:
$ zip -j ~/acme-dns-route53.zip $GOPATH/bin/acme-dns-route53
Nota: O binario debería estar na raíz do arquivo zip. Para iso utilizamos -j Bandeira.
Agora o noso alcume zip está listo para a súa implantación, só queda crear un rol cos dereitos necesarios.
Creando un rol IAM
Necesitamos configurar un rol IAM cos dereitos que require a nosa lambda durante a súa execución.
Chamemos esta política lambda-acme-dns-route53-executor e inmediatamente darlle un papel básico AWSLambdaBasicExecutionRole. Isto permitirá que a nosa lambda execute e escriba rexistros no servizo AWS CloudWatch.
En primeiro lugar, creamos un ficheiro JSON que describe os nosos dereitos. Isto permitirá esencialmente que os servizos lambda utilicen o rol lambda-acme-dns-route53-executor:
Agora imos executar o comando aws iam create-role para crear un papel:
$ aws iam create-role --role-name lambda-acme-dns-route53-executor
--assume-role-policy-document ~/lambda-acme-dns-route53-executor-policy.json
Nota: lembre a política ARN (Nome do recurso de Amazon) - necesitarémola nos próximos pasos.
Papel lambda-acme-dns-route53-executor creado, agora necesitamos especificar os permisos para iso. A forma máis sinxela de facelo é usar o comando aws iam attach-role-policy, aprobando a política ARN AWSLambdaBasicExecutionRole do seguinte xeito:
$ aws iam attach-role-policy --role-name lambda-acme-dns-route53-executor
--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Nota: pódese atopar unha lista con outras políticas aquí.
Creando unha función lambda que se execute acme-dns-route53
Hurra! Agora podes implementar a nosa función en AWS usando o comando aws lambda create-function. A lambda debe configurarse usando as seguintes variables de ambiente:
AWS_LAMBDA - deixa claro acme-dns-route53 esa execución ocorre dentro de AWS Lambda.
DOMAINS — unha lista de dominios separados por comas.